import {EventFixture} from 'sentry-fixture/event'; import {OrganizationFixture} from 'sentry-fixture/organization'; import {ProjectFixture} from 'sentry-fixture/project'; import {RouteComponentPropsFixture} from 'sentry-fixture/routeComponentPropsFixture'; import {act, render, screen} from 'sentry-test/reactTestingLibrary'; import ProjectsStore from 'sentry/stores/projectsStore'; import EventDetails from 'sentry/views/performance/transactionDetails'; const alertText = 'You are viewing a sample transaction. Configure performance to start viewing real transactions.'; describe('EventDetails', () => { const project = ProjectFixture(); const organization = OrganizationFixture({ features: ['performance-view'], projects: [project], }); beforeEach(() => { ProjectsStore.loadInitialData([project]); MockApiClient.addMockResponse({ url: `/organizations/${organization.slug}/projects/`, statusCode: 200, body: [], }); MockApiClient.addMockResponse({ url: `/projects/${organization.slug}/latest/events/1/grouping-info/`, statusCode: 200, body: {}, }); MockApiClient.addMockResponse({ url: `/projects/${organization.slug}/latest/events/1/committers/`, statusCode: 200, body: [], }); MockApiClient.addMockResponse({ url: `/projects/${organization.slug}/latest/events/1/actionable-items/`, body: { errors: [], }, }); }); afterEach(() => { ProjectsStore.reset(); MockApiClient.clearMockResponses(); }); it('renders alert for sample transaction', async () => { const event = EventFixture(); event.tags.push({key: 'sample_event', value: 'yes'}); MockApiClient.addMockResponse({ url: `/organizations/${organization.slug}/events/latest/`, statusCode: 200, body: { ...event, }, }); render( , {organization} ); expect(await screen.findByText(alertText)).toBeInTheDocument(); // Expect stores to be updated await act(tick); }); it('does not reender alert if already received transaction', async () => { const event = EventFixture(); MockApiClient.addMockResponse({ url: `/organizations/${organization.slug}/events/latest/`, statusCode: 200, body: { ...event, }, }); render( , {organization} ); expect(screen.queryByText(alertText)).not.toBeInTheDocument(); // Expect stores to be updated await act(tick); }); });