import {OrganizationFixture} from 'sentry-fixture/organization'; import {SearchFixture} from 'sentry-fixture/search'; import {initializeOrg} from 'sentry-test/initializeOrg'; import {render, screen, userEvent, waitFor} from 'sentry-test/reactTestingLibrary'; import {DEFAULT_QUERY} from 'sentry/constants'; import {SavedSearchType, SavedSearchVisibility} from 'sentry/types/group'; import IssueListSetAsDefault from 'sentry/views/issueList/issueListSetAsDefault'; import {IssueSortOptions} from 'sentry/views/issueList/utils'; describe('IssueListSetAsDefault', () => { const organization = OrganizationFixture(); const {router} = initializeOrg(); const routerProps = { params: router.params, location: router.location, }; const defaultProps = { organization, query: 'browser:firefox', sort: IssueSortOptions.DATE, ...routerProps, }; beforeEach(() => { MockApiClient.clearMockResponses(); }); it('can set a search as default', async () => { MockApiClient.addMockResponse({ url: '/organizations/org-slug/searches/', body: [], }); const mockPinSearch = MockApiClient.addMockResponse({ url: '/organizations/org-slug/pinned-searches/', method: 'PUT', body: SearchFixture({ isPinned: true, visibility: SavedSearchVisibility.OWNER_PINNED, }), }); render(, {organization}); await userEvent.click(screen.getByRole('button', {name: /set as default/i})); await waitFor(() => { expect(mockPinSearch).toHaveBeenCalledWith( expect.anything(), expect.objectContaining({ data: {query: 'browser:firefox', sort: 'date', type: SavedSearchType.ISSUE}, }) ); }); }); it('can remove a default search', async () => { MockApiClient.addMockResponse({ url: '/organizations/org-slug/searches/', body: [SearchFixture({isPinned: true, query: 'browser:firefox'})], }); const mockUnpinSearch = MockApiClient.addMockResponse({ url: '/organizations/org-slug/pinned-searches/', method: 'DELETE', }); render(, {organization}); await userEvent.click(await screen.findByRole('button', {name: /remove default/i})); await waitFor(() => { expect(mockUnpinSearch).toHaveBeenCalledWith( expect.anything(), expect.objectContaining({ data: {type: SavedSearchType.ISSUE}, }) ); }); }); it('does not render anything when on default search and no pinned search', () => { MockApiClient.addMockResponse({ url: '/organizations/org-slug/searches/', body: [SearchFixture({isPinned: false, query: 'browser:firefox'})], }); render(, { organization, }); expect(screen.queryByRole('button')).not.toBeInTheDocument(); }); it('does render when on default search and existing pinned search', async () => { MockApiClient.addMockResponse({ url: '/organizations/org-slug/searches/', body: [SearchFixture({isPinned: true, query: 'browser:firefox'})], }); render(, { organization, }); await screen.findByRole('button', {name: /remove default/i}); }); });