import {AutofixRootCauseData} from 'sentry-fixture/autofixRootCauseData'; import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary'; import {AutofixRootCause} from 'sentry/components/events/autofix/autofixRootCause'; describe('AutofixRootCause', function () { const defaultProps = { causes: [AutofixRootCauseData()], groupId: '1', rootCauseSelection: null, runId: '101', }; it('can select a suggested fix', async function () { const mockSelectFix = MockApiClient.addMockResponse({ url: '/issues/1/autofix/update/', method: 'POST', }); render(); // Displays all root cause and suggested fix info expect(screen.getByText('This is the title of a root cause.')).toBeInTheDocument(); expect( screen.getByText('This is the description of a root cause.') ).toBeInTheDocument(); expect( screen.getByText('Suggested Fix #1: This is the title of a suggested fix.') ).toBeInTheDocument(); expect( screen.getByText('This is the description of a suggested fix.') ).toBeInTheDocument(); await userEvent.click(screen.getByRole('button', {name: 'Continue With This Fix'})); expect(mockSelectFix).toHaveBeenCalledWith( expect.anything(), expect.objectContaining({ data: { run_id: '101', payload: { type: 'select_root_cause', cause_id: '100', fix_id: '200', }, }, }) ); }); it('can provide a custom root cause', async function () { const mockSelectFix = MockApiClient.addMockResponse({ url: '/issues/1/autofix/update/', method: 'POST', }); render(); await userEvent.click( screen.getByRole('button', {name: 'Provide your own root cause'}) ); await userEvent.keyboard('custom root cause'); await userEvent.click(screen.getByRole('button', {name: 'Continue With This Fix'})); expect(mockSelectFix).toHaveBeenCalledWith( expect.anything(), expect.objectContaining({ data: { run_id: '101', payload: { type: 'select_root_cause', custom_root_cause: 'custom root cause', }, }, }) ); }); it('shows graceful error state when there are no causes', function () { render( ); // Displays all root cause and suggested fix info expect( screen.getByText('Autofix was not able to find a root cause. Maybe try again?') ).toBeInTheDocument(); }); });