import {OrganizationFixture} from 'sentry-fixture/organization'; import {render, screen, waitForElementToBeRemoved} from 'sentry-test/reactTestingLibrary'; import {useLocation} from 'sentry/utils/useLocation'; import useOrganization from 'sentry/utils/useOrganization'; import usePageFilters from 'sentry/utils/usePageFilters'; import {HTTPDomainSummaryPage} from 'sentry/views/performance/http/httpDomainSummaryPage'; jest.mock('sentry/utils/useLocation'); jest.mock('sentry/utils/usePageFilters'); jest.mock('sentry/utils/useOrganization'); describe('HTTPSummaryPage', function () { const organization = OrganizationFixture(); let domainChartsRequestMock; jest.mocked(usePageFilters).mockReturnValue({ isReady: true, desyncedFilters: new Set(), pinnedFilters: new Set(), shouldPersist: true, selection: { datetime: { period: '10d', start: null, end: null, utc: false, }, environments: [], projects: [], }, }); jest.mocked(useLocation).mockReturnValue({ pathname: '', search: '', query: {domain: '*.sentry.dev', statsPeriod: '10d'}, hash: '', state: undefined, action: 'PUSH', key: '', }); jest.mocked(useOrganization).mockReturnValue(organization); beforeEach(function () { MockApiClient.addMockResponse({ url: `/organizations/${organization.slug}/events/`, method: 'GET', body: { data: [], }, }); domainChartsRequestMock = MockApiClient.addMockResponse({ url: `/organizations/${organization.slug}/events-stats/`, method: 'GET', body: { 'spm()': { data: [ [1699907700, [{count: 7810.2}]], [1699908000, [{count: 1216.8}]], ], }, }, }); }); afterAll(function () { jest.resetAllMocks(); }); it('fetches module data', async function () { render(); expect(domainChartsRequestMock).toHaveBeenNthCalledWith( 1, `/organizations/${organization.slug}/events-stats/`, expect.objectContaining({ method: 'GET', query: { cursor: undefined, dataset: 'spansMetrics', environment: [], excludeOther: 0, field: [], interval: '30m', orderby: undefined, partial: 1, per_page: 50, project: [], query: 'span.module:http span.domain:"\\*.sentry.dev"', referrer: 'api.starfish.http-module-domain-summary-throughput-chart', statsPeriod: '10d', topEvents: undefined, yAxis: 'spm()', }, }) ); expect(domainChartsRequestMock).toHaveBeenNthCalledWith( 2, `/organizations/${organization.slug}/events-stats/`, expect.objectContaining({ method: 'GET', query: { cursor: undefined, dataset: 'spansMetrics', environment: [], excludeOther: 0, field: [], interval: '30m', orderby: undefined, partial: 1, per_page: 50, project: [], query: 'span.module:http span.domain:"\\*.sentry.dev"', referrer: 'api.starfish.http-module-domain-summary-duration-chart', statsPeriod: '10d', topEvents: undefined, yAxis: 'avg(span.self_time)', }, }) ); await waitForElementToBeRemoved(() => screen.queryAllByTestId('loading-indicator')); }); });