import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
import HelpSearch from 'sentry/components/helpSearch';
const mockResults = [
{
site: 'docs',
name: 'Documentation',
hits: [
{
id: 'SitePage /platforms/native/guides/minidumps/',
site: 'docs',
url: 'https://docs.sentry.io/platforms/native/guides/minidumps/',
context: {context1: 'Platforms > Native > Guides > Minidumps'},
title: 'Minidumps',
text: 'Sentry can process Minidump crash reports, a memory dump used on Windows and by\nopen …',
},
{
id: 'SitePage /product/discover-queries/query-builder/',
site: 'docs',
url: 'https://docs.sentry.io/product/discover-queries/query-builder/',
context: {context1: 'Product > Discover Queries > Query Builder'},
title: 'Query Builder',
text: '… conditions, see Using OR & AND Conditions . Tag Summary Filters Every event has a list of …',
},
],
},
{
site: 'help-center',
name: 'Help Center',
hits: [],
},
{
site: 'develop',
name: 'Developer Documentation',
hits: [
{
id: 'eee2b51a-7594-5f86-91db-267c15db5ef6',
site: 'develop',
url: 'https://develop.sentry.dev/services/digests/',
context: {context1: 'Services > Digests'},
title: 'Notification Digests',
text: '… operation, especially on large datasets. Backends Dummy Backend The dummy backend disables digest scheduling …',
},
],
},
{
site: 'blog',
name: 'Blog Posts',
hits: [
{
id: 'ae61cfd6d4b462d24dd4622b8b7db274',
site: 'blog',
context: {context1: 'Building Sentry: Symbolicator'},
url: 'https://blog.sentry.io/2019/06/13/building-a-sentry-symbolicator/',
title: 'Stacking your cards frames',
text: '… traces. Since iOS is particularly restrictive, we dumped this information into a temporary location and …',
},
],
},
];
jest.mock('@sentry-internal/global-search', () => ({
SentryGlobalSearch: jest
.fn()
.mockImplementation(() => ({query: () => Promise.resolve(mockResults)})),
}));
describe('HelpSearch', function () {
it('produces search results', async function () {
render(
(
)}
/>
);
userEvent.type(screen.getByTestId('search'), 'dummy');
await screen.findByText('From Documentation');
for (const result of mockResults) {
expect(screen.getByText(`From ${result.name}`)).toBeInTheDocument();
}
expect(screen.getAllByTestId('highlight')).toHaveLength(5);
});
});