import {OrganizationFixture} from 'sentry-fixture/organization'; import {initializeOrg} from 'sentry-test/initializeOrg'; import {render, screen} from 'sentry-test/reactTestingLibrary'; import OrganizationStore from 'sentry/stores/organizationStore'; import PageFiltersStore from 'sentry/stores/pageFiltersStore'; import ProjectsStore from 'sentry/stores/projectsStore'; import OrganizationLayout from 'sentry/views/organizationLayout'; jest.mock( 'sentry/components/sidebar', () => function () { return
; } ); describe('OrganizationLayout', function () { const {routerContext} = initializeOrg(); beforeEach(function () { OrganizationStore.reset(); ProjectsStore.reset(); PageFiltersStore.reset(); MockApiClient.clearMockResponses(); MockApiClient.addMockResponse({ url: '/organizations/org-slug/broadcasts/', body: [], }); MockApiClient.addMockResponse({ url: '/organizations/org-slug/environments/', body: [], }); }); describe('deletion states', () => { it('should render a restoration prompt', async function () { const organization = OrganizationFixture({ status: { id: 'pending_deletion', name: 'pending deletion', }, }); OrganizationStore.onUpdate(organization); render(
, {context: routerContext, organization} ); expect(await screen.findByText('Deletion Scheduled')).toBeInTheDocument(); expect(screen.getByLabelText('Restore Organization')).toBeInTheDocument(); expect( screen.getByText( 'Would you like to cancel this process and restore the organization back to the original state?' ) ).toBeInTheDocument(); }); it('should render a restoration prompt without action for members', async function () { const organization = OrganizationFixture({ access: [], status: { id: 'pending_deletion', name: 'pending deletion', }, }); OrganizationStore.onUpdate(organization); render(
, {context: routerContext, organization} ); expect(await screen.findByText('Deletion Scheduled')).toBeInTheDocument(); const mistakeText = screen.getByText( 'If this is a mistake, contact an organization owner and ask them to restore this organization.' ); expect(mistakeText).toBeInTheDocument(); expect(screen.queryByLabelText('Restore Organization')).not.toBeInTheDocument(); }); }); it('should render a deletion in progress prompt', async function () { const organization = OrganizationFixture({ status: { id: 'deletion_in_progress', name: 'deletion in progress', }, }); OrganizationStore.onUpdate(organization); render(
, {context: routerContext, organization} ); const inProgress = await screen.findByText( 'currently in the process of being deleted from Sentry.', {exact: false} ); expect(inProgress).toBeInTheDocument(); expect(screen.queryByLabelText('Restore Organization')).not.toBeInTheDocument(); }); });