import { render, renderGlobalModal, screen, userEvent, } from 'sentry-test/reactTestingLibrary'; 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 {container} = render(); expect(container).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 {container} = render(); expect(container).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, }, ], }); render(); const disconnectRequest = { url: `${ENDPOINT}social-identity/1/`, method: 'DELETE', }; const mock = Client.addMockResponse(disconnectRequest); expect(mock).not.toHaveBeenCalled(); await userEvent.click(screen.getByRole('button', {name: 'Disconnect'})); renderGlobalModal(); await userEvent.click(screen.getByTestId('confirm-button')); expect(mock).toHaveBeenCalledTimes(1); expect(mock).toHaveBeenCalledWith( `${ENDPOINT}social-identity/1/`, expect.objectContaining({ method: 'DELETE', }) ); }); });