import { render, renderGlobalModal, screen, userEvent, waitForElementToBeRemoved, } from 'sentry-test/reactTestingLibrary'; import ProjectKeys from 'sentry/views/settings/project/projectKeys/list'; describe('ProjectKeys', function () { let org, project; let deleteMock; let projectKeys; beforeEach(function () { org = TestStubs.Organization(); project = TestStubs.Project(); projectKeys = TestStubs.ProjectKeys(); MockApiClient.clearMockResponses(); MockApiClient.addMockResponse({ url: `/projects/${org.slug}/${project.slug}/keys/`, method: 'GET', body: projectKeys, }); deleteMock = MockApiClient.addMockResponse({ url: `/projects/${org.slug}/${project.slug}/keys/${projectKeys[0].id}/`, method: 'DELETE', }); }); it('renders empty', function () { MockApiClient.clearMockResponses(); MockApiClient.addMockResponse({ url: `/projects/${org.slug}/${project.slug}/keys/`, method: 'GET', body: [], }); render( ); expect( screen.getByText('There are no keys active for this project.') ).toBeInTheDocument(); }); it('has clippable box', function () { render( ); const expandButton = screen.getByRole('button', {name: 'Expand'}); userEvent.click(expandButton); expect(expandButton).not.toBeInTheDocument(); }); it('deletes key', function () { render( ); userEvent.click(screen.getByRole('button', {name: 'Delete'})); renderGlobalModal(); userEvent.click(screen.getByTestId('confirm-button')); expect(deleteMock).toHaveBeenCalled(); }); it('disable and enables key', async function () { render( ); const enableMock = MockApiClient.addMockResponse({ url: `/projects/${org.slug}/${project.slug}/keys/${projectKeys[0].id}/`, method: 'PUT', }); renderGlobalModal(); userEvent.click(screen.getByRole('button', {name: 'Disable'})); userEvent.click(screen.getByTestId('confirm-button')); await waitForElementToBeRemoved(() => screen.getByRole('dialog')); expect(enableMock).toHaveBeenCalledWith( expect.anything(), expect.objectContaining({ data: {isActive: false}, }) ); userEvent.click(screen.getByRole('button', {name: 'Enable'})); userEvent.click(screen.getByTestId('confirm-button')); expect(enableMock).toHaveBeenCalledWith( expect.anything(), expect.objectContaining({ data: {isActive: true}, }) ); }); });