import type {InitializeDataSettings} from 'sentry-test/performance/initializePerformanceData'; import {initializeData as _initializeData} from 'sentry-test/performance/initializePerformanceData'; import {act, cleanup, render, screen} from 'sentry-test/reactTestingLibrary'; import ProjectsStore from 'sentry/stores/projectsStore'; import TransactionAnomalies from 'sentry/views/performance/transactionSummary/transactionAnomalies'; const initializeData = (settings: InitializeDataSettings) => { const data = _initializeData(settings); act(() => void ProjectsStore.loadInitialData(data.projects)); return data; }; describe('AnomaliesTab', function () { let anomaliesMock: any; beforeEach(function () { MockApiClient.addMockResponse({ url: '/organizations/org-slug/projects/', body: [], }); MockApiClient.addMockResponse({ url: '/organizations/org-slug/sdk-updates/', body: [], }); MockApiClient.addMockResponse({ url: '/organizations/org-slug/prompts-activity/', body: {}, }); MockApiClient.addMockResponse({ url: '/organizations/org-slug/events-has-measurements/', body: {measurements: false}, }); MockApiClient.addMockResponse({ url: '/organizations/org-slug/replay-count/', body: {}, }); anomaliesMock = MockApiClient.addMockResponse({ url: '/organizations/org-slug/transaction-anomaly-detection/', body: {}, }); }); afterEach(cleanup); it('renders basic UI elements with flag', async function () { const initialData = initializeData({ features: ['performance-view', 'performance-anomaly-detection-ui'], query: {project: '1', transaction: 'transaction'}, }); render(, { router: initialData.router, organization: initialData.organization, }); expect(await screen.findByText('Transaction Count')).toBeInTheDocument(); expect(anomaliesMock).toHaveBeenCalledTimes(1); expect(anomaliesMock).toHaveBeenNthCalledWith( 1, expect.anything(), expect.objectContaining({ query: expect.objectContaining({ environment: [], field: ['tpm()'], per_page: 50, project: ['1'], query: 'transaction:transaction', statsPeriod: '14d', }), }) ); }); });