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();
});
});