import {mountWithTheme} from 'sentry-test/enzyme';
import {mountGlobalModal} from 'sentry-test/modal';
import {Client} from 'sentry/api';
import AccountIdentities from 'sentry/views/settings/account/accountIdentities';
const ENDPOINT = '/users/me/user-identities/';
describe('AccountIdentities', function () {
beforeEach(function () {
Client.clearMockResponses();
});
it('renders empty', function () {
Client.addMockResponse({
url: ENDPOINT,
method: 'GET',
body: [],
});
const wrapper = mountWithTheme();
expect(wrapper).toSnapshot();
});
it('renders list', function () {
Client.addMockResponse({
url: ENDPOINT,
method: 'GET',
body: [
{
category: 'social-identity',
id: '1',
provider: {
key: 'github',
name: 'GitHub',
},
status: 'can_disconnect',
organization: null,
},
],
});
const wrapper = mountWithTheme();
expect(wrapper).toSnapshot();
});
it('disconnects identity', async function () {
Client.addMockResponse({
url: ENDPOINT,
method: 'GET',
body: [
{
category: 'social-identity',
id: '1',
provider: {
key: 'github',
name: 'GitHub',
},
status: 'can_disconnect',
organization: null,
},
],
});
const wrapper = mountWithTheme();
const disconnectRequest = {
url: `${ENDPOINT}social-identity/1/`,
method: 'DELETE',
};
const mock = Client.addMockResponse(disconnectRequest);
expect(mock).not.toHaveBeenCalled();
wrapper.find('Button').first().simulate('click');
const modal = await mountGlobalModal();
modal.find('Button[priority="danger"]').simulate('click');
expect(mock).toHaveBeenCalledTimes(1);
expect(mock).toHaveBeenCalledWith(
`${ENDPOINT}social-identity/1/`,
expect.objectContaining({
method: 'DELETE',
})
);
});
});