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