import {TeamFixture} from 'sentry-fixture/team'; import {initializeOrg} from 'sentry-test/initializeOrg'; import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary'; import OrganizationStore from 'sentry/stores/organizationStore'; import {useNavigate} from 'sentry/utils/useNavigate'; import Monitors from 'sentry/views/monitors/overview'; jest.mock('sentry/utils/useNavigate', () => ({ useNavigate: jest.fn(), })); const mockUseNavigate = jest.mocked(useNavigate); const mockNavigate = jest.fn(); mockUseNavigate.mockReturnValue(mockNavigate); describe('Monitors Overview', function () { const team = TeamFixture(); beforeEach(function () { OrganizationStore.init(); MockApiClient.clearMockResponses(); MockApiClient.addMockResponse({ url: '/organizations/org-slug/monitors/', body: [], }); MockApiClient.addMockResponse({ url: '/organizations/org-slug/processing-errors/', body: [], }); MockApiClient.addMockResponse({ url: '/organizations/org-slug/projects/', body: [], }); MockApiClient.addMockResponse({ url: '/organizations/org-slug/members/', body: [], }); MockApiClient.addMockResponse({ url: '/organizations/org-slug/teams/', body: [team], }); }); it('renders', async function () { const {organization, router} = initializeOrg(); OrganizationStore.onUpdate(organization); render(, {organization, router}); expect(await screen.findByText('Cron Monitors')).toBeInTheDocument(); }); it('correctly filters on owner', async function () { const {organization, router} = initializeOrg({ router: {location: {query: {cursor: 'test-cursor'}}}, }); OrganizationStore.onUpdate(organization); render(, {organization, router}); expect(await screen.findByText('Cron Monitors')).toBeInTheDocument(); await userEvent.click(screen.getByRole('button', {name: 'All Owners'})); await userEvent.click(screen.getByRole('option', {name: '#team-slug'})); expect(mockNavigate).toHaveBeenLastCalledWith( { query: { cursor: undefined, // Confirm that the cursor is reset owner: ['team:1'], }, }, {replace: true} ); }); });