import {AutofixCodebaseChangeData} from 'sentry-fixture/autofixCodebaseChangeData'; import {AutofixStepFixture} from 'sentry-fixture/autofixStep'; import { render, renderGlobalModal, screen, userEvent, within, } from 'sentry-test/reactTestingLibrary'; import {AutofixChanges} from 'sentry/components/events/autofix/autofixChanges'; import { type AutofixChangesStep, AutofixStepType, } from 'sentry/components/events/autofix/types'; describe('AutofixChanges', function () { const defaultProps = { groupId: '1', onRetry: jest.fn(), step: AutofixStepFixture({ type: AutofixStepType.CHANGES, changes: [AutofixCodebaseChangeData()], }) as AutofixChangesStep, }; it('displays link to PR when one exists', function () { MockApiClient.addMockResponse({ url: '/issues/1/autofix/setup/', body: { genAIConsent: {ok: true}, codebaseIndexing: {ok: true}, integration: {ok: true}, githubWriteIntegration: { repos: [{ok: true, owner: 'owner', name: 'hello-world', id: 100}], }, }, }); render(); expect( screen.queryByRole('button', {name: 'Create a Pull Request'}) ).not.toBeInTheDocument(); expect(screen.getByRole('button', {name: 'View Pull Request'})).toHaveAttribute( 'href', 'https://github.com/owner/hello-world/pull/200' ); }); it('displays setup button when permissions do not exist for repo', async function () { MockApiClient.addMockResponse({ url: '/issues/1/autofix/setup/', body: { genAIConsent: {ok: true}, codebaseIndexing: {ok: true}, integration: {ok: true}, githubWriteIntegration: { repos: [ {ok: false, provider: 'github', owner: 'owner', name: 'hello-world', id: 100}, ], }, }, }); render( ); renderGlobalModal(); await userEvent.click(screen.getByRole('button', {name: 'Create a Pull Request'})); expect(await screen.findByRole('dialog')).toBeInTheDocument(); expect( within(screen.getByRole('dialog')).getByText('Allow Autofix to Make Pull Requests') ).toBeInTheDocument(); }); });