import {act, renderGlobalModal, screen} from 'sentry-test/reactTestingLibrary'; import {openModal} from 'sentry/actionCreators/modal'; import {AutofixSetupWriteAccessModal} from 'sentry/components/events/autofix/autofixSetupWriteAccessModal'; describe('AutofixSetupWriteAccessModal', function () { it('displays help text when repos are not all installed', async function () { MockApiClient.addMockResponse({ url: '/issues/1/autofix/setup/?check_write_access=true', body: { genAIConsent: {ok: false}, integration: {ok: true}, githubWriteIntegration: { ok: false, repos: [ { provider: 'integrations:github', owner: 'getsentry', name: 'sentry', external_id: '123', ok: true, }, { provider: 'integrations:github', owner: 'getsentry', name: 'seer', external_id: '235', ok: false, }, ], }, }, }); const closeModal = jest.fn(); renderGlobalModal(); act(() => { openModal( modalProps => , { onClose: closeModal, } ); }); expect(screen.getByText(/In order to create pull requests/i)).toBeInTheDocument(); expect(await screen.findByText('getsentry/sentry')).toBeInTheDocument(); expect(screen.getByText('getsentry/seer')).toBeInTheDocument(); expect( screen.getByRole('button', {name: 'Install the Autofix GitHub App'}) ).toHaveAttribute('href', 'https://github.com/apps/sentry-autofix/installations/new'); }); it('displays success text when installed repos for github app text', async function () { MockApiClient.addMockResponse({ url: '/issues/1/autofix/setup/?check_write_access=true', body: { genAIConsent: {ok: false}, integration: {ok: true}, githubWriteIntegration: { ok: true, repos: [ { provider: 'integrations:github', owner: 'getsentry', name: 'sentry', external_id: '123', ok: true, }, { provider: 'integrations:github', owner: 'getsentry', name: 'seer', external_id: '235', ok: true, }, ], }, }, }); const closeModal = jest.fn(); renderGlobalModal(); act(() => { openModal( modalProps => , {onClose: closeModal} ); }); expect( await screen.findByText("You've successfully configured write access!") ).toBeInTheDocument(); // Footer with actions should no longer be visible expect(screen.queryByRole('button', {name: /install/i})).not.toBeInTheDocument(); }); });