import {OrganizationFixture} from 'sentry-fixture/organization'; import {render, screen} from 'sentry-test/reactTestingLibrary'; import ProjectApdexScoreCard from 'sentry/views/projectDetail/projectScoreCards/projectApdexScoreCard'; describe('ProjectDetail > ProjectApdex', function () { let currentDataEndpointMock: jest.Mock; let previousDataEndpointMock: jest.Mock; const organization = OrganizationFixture(); const selection = { projects: [1], environments: [], datetime: { start: null, end: null, period: '14d', utc: null, }, }; afterEach(function () { MockApiClient.clearMockResponses(); }); it('renders apdex', async function () { previousDataEndpointMock = MockApiClient.addMockResponse({ url: `/organizations/${organization.slug}/events/`, body: { data: [ { 'apdex()': 0.678, }, ], }, status: 200, }); currentDataEndpointMock = MockApiClient.addMockResponse({ url: `/organizations/${organization.slug}/events/`, body: { data: [ { 'apdex()': 0.781, }, ], }, status: 200, match: [MockApiClient.matchQuery({statsPeriod: '14d'})], }); render( ); expect(await screen.findByText('Apdex')).toBeInTheDocument(); expect(await screen.findByText('0.781')).toBeInTheDocument(); expect(await screen.findByText('0.102')).toBeInTheDocument(); expect(currentDataEndpointMock).toHaveBeenNthCalledWith( 1, `/organizations/${organization.slug}/events/`, expect.objectContaining({ query: { environment: [], field: ['apdex()'], project: ['1'], query: 'event.type:transaction count():>0', statsPeriod: '14d', }, }) ); expect(previousDataEndpointMock).toHaveBeenNthCalledWith( 1, `/organizations/${organization.slug}/events/`, expect.objectContaining({ query: { environment: [], field: ['apdex()'], project: ['1'], query: 'event.type:transaction count():>0', start: '2017-09-19T02:41:20', end: '2017-10-03T02:41:20', }, }) ); }); it('renders without performance', async function () { const endpointMock = MockApiClient.addMockResponse({ url: `/organizations/${organization.slug}/events/`, body: { detail: 'test error', }, status: 404, }); render( ); expect(await screen.findByText('Apdex')).toBeInTheDocument(); expect(await screen.findByRole('button', {name: 'Start Setup'})).toBeInTheDocument(); expect(await screen.findByRole('button', {name: 'Get Tour'})).toBeInTheDocument(); expect(endpointMock).not.toHaveBeenCalled(); }); });