import {OrganizationFixture} from 'sentry-fixture/organization'; import {initializeOrg} from 'sentry-test/initializeOrg'; import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary'; import OrganizationRestore from 'sentry/views/organizationRestore'; describe('OrganizationRestore', function () { let mockUpdate, mockGet; const pendingDeleteOrg = OrganizationFixture({ status: {id: 'pending_deletion', name: 'Pending Deletion'}, }); const deleteInProgressOrg = OrganizationFixture({ status: {id: 'deletion_in_progress', name: 'Deletion in progress'}, }); beforeEach(() => { mockUpdate = MockApiClient.addMockResponse({ url: `/organizations/${pendingDeleteOrg.slug}/`, method: 'PUT', status: 200, body: OrganizationFixture(), }); }); it('loads the current organization', async () => { mockGet = MockApiClient.addMockResponse({ url: `/organizations/${pendingDeleteOrg.slug}/`, method: 'GET', status: 200, body: pendingDeleteOrg, }); const {routerProps, routerContext} = initializeOrg<{orgId: string}>({ organization: pendingDeleteOrg, }); render(, {context: routerContext}); const text = await screen.findByText(/currently scheduled for deletion/); expect(mockGet).toHaveBeenCalled(); expect(text).toBeInTheDocument(); expect(screen.getByTestId('form-submit')).toBeInTheDocument(); }); it('submits update requests', async () => { mockGet = MockApiClient.addMockResponse({ url: `/organizations/${pendingDeleteOrg.slug}/`, method: 'GET', status: 200, body: pendingDeleteOrg, }); const {routerProps, routerContext} = initializeOrg<{orgId: string}>({ organization: pendingDeleteOrg, }); render(, {context: routerContext}); const button = await screen.findByTestId('form-submit'); await userEvent.click(button); expect(mockUpdate).toHaveBeenCalled(); expect(window.location.assign).toHaveBeenCalledWith( `/organizations/${pendingDeleteOrg.slug}/issues/` ); }); it('shows message and no form during deletion', async () => { mockGet = MockApiClient.addMockResponse({ url: `/organizations/${deleteInProgressOrg.slug}/`, method: 'GET', status: 200, body: deleteInProgressOrg, }); const {routerProps, routerContext} = initializeOrg<{orgId: string}>({ organization: deleteInProgressOrg, }); render(, {context: routerContext}); const text = await screen.findByText( /organization is currently in progress of being deleted/ ); expect(text).toBeInTheDocument(); expect(screen.queryByTestId('form-submit')).not.toBeInTheDocument(); }); });