123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import {initializeOrg} from 'sentry-test/initializeOrg';
- import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
- import UnsubscribeIssue from 'sentry/views/unsubscribe/issue';
- describe('UnsubscribeIssue', function () {
- const params = {orgId: 'acme', id: '9876'};
- let mockUpdate, mockGet;
- beforeEach(() => {
- mockUpdate = MockApiClient.addMockResponse({
- url: '/organizations/acme/unsubscribe/issue/9876/?_=signature-value',
- method: 'POST',
- status: 201,
- });
- mockGet = MockApiClient.addMockResponse({
- url: '/organizations/acme/unsubscribe/issue/9876/',
- method: 'GET',
- status: 200,
- body: {
- viewUrl: 'https://acme.sentry.io/issue/9876/',
- type: 'issue',
- displayName: 'Bruce Wayne',
- },
- });
- });
- it('loads data from the API based on URL parameters', async function () {
- const {router, routerProps} = initializeOrg({
- router: {
- location: {query: {_: 'signature-value'}},
- params,
- },
- });
- render(
- <UnsubscribeIssue {...routerProps} location={router.location} params={params} />,
- {router}
- );
- expect(await screen.findByText('selected issue')).toBeInTheDocument();
- expect(screen.getByText('workflow notifications')).toBeInTheDocument();
- expect(screen.getByRole('button', {name: 'Unsubscribe'})).toBeInTheDocument();
- expect(mockGet).toHaveBeenCalled();
- });
- it('makes an API request when the form is submitted', async function () {
- const {router, routerProps} = initializeOrg({
- router: {
- location: {query: {_: 'signature-value'}},
- params,
- },
- });
- render(
- <UnsubscribeIssue {...routerProps} location={router.location} params={params} />,
- {router}
- );
- expect(await screen.findByText('selected issue')).toBeInTheDocument();
- const button = screen.getByRole('button', {name: 'Unsubscribe'});
- await userEvent.click(button);
- expect(mockUpdate).toHaveBeenCalledWith(
- '/organizations/acme/unsubscribe/issue/9876/?_=signature-value',
- expect.objectContaining({data: {cancel: 1}})
- );
- });
- });
|