12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import {loadFixtures} from 'sentry-test/loadFixtures';
- import {
- ParseResult,
- parseSearch,
- Token,
- TokenResult,
- } from 'sentry/components/searchSyntax/parser';
- import {treeTransformer} from 'sentry/components/searchSyntax/utils';
- type TestCase = {
-
- query: string;
-
- result: ParseResult;
-
- raisesError?: boolean;
- };
- const normalizeResult = (tokens: TokenResult<Token>[]) =>
- treeTransformer({
- tree: tokens,
- transform: token => {
-
-
-
- delete token.location;
-
- delete token.text;
-
- delete token.config;
- if (token.type === Token.Filter && token.invalid === null) {
-
- delete token.invalid;
- }
- if (token.type === Token.ValueIso8601Date) {
-
- return {...token, value: token.value.toISOString()};
- }
- return token;
- },
- });
- describe('searchSyntax/parser', function () {
- const testData = loadFixtures('search-syntax') as unknown as Record<string, TestCase[]>;
- const registerTestCase = (testCase: TestCase) =>
- it(`handles ${testCase.query}`, () => {
- const result = parseSearch(testCase.query);
-
- if (testCase.raisesError) {
- expect(result).toBeNull();
- return;
- }
- if (result === null) {
- throw new Error('Parsed result as null without raiseError true');
- }
- expect(normalizeResult(result)).toEqual(testCase.result);
- });
- Object.entries(testData).map(([name, cases]) =>
- describe(`${name}`, () => {
- cases.map(registerTestCase);
- })
- );
- });
|