import {OrganizationFixture} from 'sentry-fixture/organization'; import {render, screen, waitForElementToBeRemoved} from 'sentry-test/reactTestingLibrary'; import {useLocation} from 'sentry/utils/useLocation'; import usePageFilters from 'sentry/utils/usePageFilters'; import useProjects from 'sentry/utils/useProjects'; import QueuesLandingPage from 'sentry/views/performance/queues/queuesLandingPage'; jest.mock('sentry/utils/useLocation'); jest.mock('sentry/utils/usePageFilters'); jest.mock('sentry/utils/useProjects'); describe('queuesLandingPage', () => { const organization = OrganizationFixture({ features: ['performance-queues-view', 'insights-addon-modules'], }); 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: {statsPeriod: '10d', project: '1'}, hash: '', state: undefined, action: 'PUSH', key: '', }); jest.mocked(useProjects).mockReturnValue({ projects: [], onSearch: jest.fn(), placeholders: [], fetching: false, hasMore: null, fetchError: null, initiallyLoaded: false, }); let eventsMock, eventsStatsMock; beforeEach(() => { eventsMock = MockApiClient.addMockResponse({ url: `/organizations/${organization.slug}/events/`, method: 'GET', body: {data: [{'count()': 1}]}, }); eventsStatsMock = MockApiClient.addMockResponse({ url: `/organizations/${organization.slug}/events-stats/`, method: 'GET', body: {data: []}, }); }); it('renders', async () => { render(, {organization}); await screen.findByRole('table', {name: 'Queues'}); await waitForElementToBeRemoved(() => screen.queryAllByTestId('loading-indicator')); screen.getByPlaceholderText('Search for more destinations'); screen.getByText('Avg Latency'); screen.getByText('Published vs Processed'); expect(eventsStatsMock).toHaveBeenCalled(); expect(eventsMock).toHaveBeenCalled(); }); });