import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary'; import {makePinSearchAction} from 'sentry/components/smartSearchBar/actions'; describe('SmartSearchBar', () => { describe('actions', function () { const organization = TestStubs.Organization({id: '123'}); const api = new MockApiClient(); let pinRequest, unpinRequest, location; beforeEach(function () { location = { pathname: `/organizations/${organization.slug}/recent-searches/`, query: { projectId: '0', }, }; pinRequest = MockApiClient.addMockResponse({ url: `/organizations/${organization.slug}/pinned-searches/`, method: 'PUT', body: [], }); unpinRequest = MockApiClient.addMockResponse({ url: `/organizations/${organization.slug}/pinned-searches/`, method: 'DELETE', body: [], }); MockApiClient.addMockResponse({ url: `/organizations/${organization.slug}/recent-searches/`, method: 'POST', body: {}, }); }); it('does not pin when query is empty', function () { const {makeAction} = makePinSearchAction({sort: '', location}); const Action = makeAction({ api, organization, query: '', savedSearchType: 0, }).Button; render(); userEvent.click(screen.getByRole('button')); expect(pinRequest).not.toHaveBeenCalled(); }); it('adds pins', function () { const {makeAction} = makePinSearchAction({sort: '', location}); const Action = makeAction({ api, organization, query: 'is:unresolved', savedSearchType: 0, }).Button; render(); userEvent.click(screen.getByRole('button')); expect(pinRequest).toHaveBeenCalled(); expect(unpinRequest).not.toHaveBeenCalled(); }); it('removes pins', function () { const pinnedSearch = TestStubs.Search({isPinned: true}); const {makeAction} = makePinSearchAction({pinnedSearch, sort: '', location}); const Action = makeAction({ api, organization, query: 'is:unresolved', savedSearchType: 0, }).Button; render(); userEvent.click(screen.getByRole('button')); expect(pinRequest).not.toHaveBeenCalled(); expect(unpinRequest).toHaveBeenCalled(); }); }); });