Skip to content

Commit b595e4e

Browse files
committed
Simplify tests
1 parent b61276e commit b595e4e

File tree

2 files changed

+19
-62
lines changed

2 files changed

+19
-62
lines changed

tests/helpers.ts

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,27 @@
11
import * as angular from '@angular/compiler';
22
import { codeFrameColumns } from '@babel/code-frame';
3-
import * as babelParser from '@babel/parser';
4-
import type * as babel from '@babel/types';
3+
import * as babel from '@babel/parser';
54
import { wrap } from 'jest-snapshot-serializer-raw';
65
import { LinesAndColumns } from 'lines-and-columns';
76

8-
const babelParserOptions: babelParser.ParserOptions = {
7+
const babelParseOptions: babel.ParserOptions = {
98
plugins: [
109
'typescript', // NonNullAssert
1110
],
1211
ranges: true,
1312
};
1413

15-
function fixBabelCommentsRange(
16-
ast: (
17-
| ReturnType<typeof babelParser.parse>
18-
| ReturnType<typeof babelParser.parseExpression>
19-
) & { comments?: babel.Comment[] | null },
20-
) {
14+
export const parseBabelExpression = (input: string) => {
15+
const ast = babel.parseExpression(input, babelParseOptions);
16+
2117
// https://github.com/babel/babel/issues/15115
2218
for (const comment of ast.comments!) {
23-
// @ts-expect-error -- missing types
19+
// @ts-expect-error -- Missing ranges
2420
comment.range ??= [comment.start, comment.end];
2521
}
2622

2723
return ast;
28-
}
29-
30-
export function parseBabelExpression(input: string) {
31-
return fixBabelCommentsRange(
32-
babelParser.parseExpression(input, babelParserOptions),
33-
);
34-
}
35-
36-
export function parseBabel(input: string) {
37-
return fixBabelCommentsRange(babelParser.parse(input, babelParserOptions));
38-
}
24+
};
3925

4026
export function massageAst(ast: any, parser: 'babel' | 'angular'): any {
4127
if (!ast || typeof ast !== 'object') {

tests/transform.test.ts

Lines changed: 12 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,15 @@
11
import type * as angular from '@angular/compiler';
2-
import type * as babelParser from '@babel/parser';
3-
import type * as babel from '@babel/types';
42

53
import * as angularParser from '../src/angular-parser.js';
64
import * as estreeParser from '../src/estree-parser.js';
75
import type { NGNode } from '../src/types.js';
86
import {
97
getAngularNodeType,
108
massageAst,
11-
parseBabel,
129
parseBabelExpression,
1310
snapshotAst,
1411
} from './helpers.js';
1512

16-
type BabelParseResult = ReturnType<typeof babelParser.parse>;
17-
type BabelParseExpressionResult = ReturnType<
18-
typeof babelParser.parseExpression
19-
>;
20-
2113
const PARSE_METHODS = [
2214
'parseAction',
2315
'parseBinding',
@@ -504,56 +496,35 @@ function runTest(testCase: TestCase, method: (typeof PARSE_METHODS)[number]) {
504496
const parseEstree = estreeParser[method];
505497

506498
if (!isAllowed) {
507-
test(`disallowed in ${method}`, () => {
508-
expect(() => parseAngular(text)).toThrow();
509-
expect(() => parseEstree(text)).toThrow();
510-
});
499+
test(`disallowed in ${method}`, () => {});
511500
return;
512501
}
513502

514-
let angularNode: angular.AST;
515-
let estreeNode: NGNode;
516-
let babelNode: (
517-
| BabelParseResult
518-
| BabelParseExpressionResult
519-
| babel.Expression
520-
) & { comments?: babel.Comment[] | null };
503+
test(`${method}(${JSON.stringify(text)})`, () => {
504+
if (!isAllowed) {
505+
expect(() => parseAngular(text)).toThrow();
506+
expect(() => parseEstree(text)).toThrow();
507+
}
521508

522-
beforeAll(() => {
523-
angularNode = parseAngular(text).result.ast;
509+
let angularNode = parseAngular(text).result.ast;
524510
if (method === 'parseInterpolationExpression') {
525511
angularNode = (angularNode as angular.Interpolation).expressions[0];
526512
}
527-
528-
estreeNode = parseEstree(text);
529-
if (!estreeNode.type.startsWith('NG')) {
530-
try {
531-
babelNode = parseBabelExpression(text);
532-
} catch {
533-
babelNode = parseBabel(text);
534-
}
535-
}
536-
});
537-
538-
test(`${method}(${JSON.stringify(text)})`, () => {
539513
expect(angularNode).toBeDefined();
540-
expect(estreeNode).toBeDefined();
541-
542514
expect(getAngularNodeType(angularNode)).toEqual(expectedAngularType);
515+
516+
const estreeNode = parseEstree(text);
517+
expect(estreeNode).toBeDefined();
543518
expect(estreeNode.type).toEqual(expectedEstreeType);
544519

545520
if (estreeNode.type.startsWith('NG')) {
546521
expect(snapshotAst(estreeNode, text)).toMatchSnapshot();
547522
return;
548523
}
549524

525+
const babelNode = parseBabelExpression(text);
526+
550527
expect(babelNode).toBeDefined();
551-
if (babelNode.type === 'File') {
552-
const { comments = [], program } = babelNode;
553-
const statement = program.body[0] as babel.ExpressionStatement;
554-
expect(statement.type).toEqual('ExpressionStatement');
555-
babelNode = { ...statement.expression, comments };
556-
}
557528
expect(massageAst(estreeNode, 'angular')).toEqual(
558529
massageAst(babelNode, 'babel'),
559530
);

0 commit comments

Comments
 (0)