Skip to content

Commit 68d2baf

Browse files
clydinhybrist
authored andcommitted
test(@schematics/angular): centralize jasmine-to-vitest test helper
This commit refactors the test suite for the `jasmine-to-vitest` schematic by centralizing the duplicated `expectTransformation` helper function into a single `test-helpers.ts` file. This change improves the long-term maintainability of the test suite by: - Reducing code duplication across multiple spec files. - Creating a single source of truth for the core test logic, making future updates easier. - Improving the overall structure and readability of the tests.
1 parent eee4430 commit 68d2baf

File tree

7 files changed

+41
-70
lines changed

7 files changed

+41
-70
lines changed

packages/schematics/angular/BUILD.bazel

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ ts_project(
7272
include = ["**/*.ts"],
7373
exclude = [
7474
"**/*_spec.ts",
75+
"refactor/jasmine-vitest/test-helpers.ts",
7576
# Also exclude templated files.
7677
"*/files/**/*.ts",
7778
"*/other-files/**/*.ts",
@@ -114,6 +115,7 @@ ts_project(
114115
include = [
115116
"**/*_spec.ts",
116117
"utility/test/**/*.ts",
118+
"refactor/jasmine-vitest/test-helpers.ts",
117119
],
118120
exclude = [
119121
# NB: we need to exclude the nested node_modules that is laid out by yarn workspaces

packages/schematics/angular/refactor/jasmine-vitest/test-file-transformer_spec.ts

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,7 @@
66
* found in the LICENSE file at https://angular.dev/license
77
*/
88

9-
import { logging } from '@angular-devkit/core';
10-
import { format } from 'prettier';
11-
import { transformJasmineToVitest } from './test-file-transformer';
12-
import { RefactorReporter } from './utils/refactor-reporter';
13-
14-
async function expectTransformation(input: string, expected: string): Promise<void> {
15-
const logger = new logging.NullLogger();
16-
const reporter = new RefactorReporter(logger);
17-
const transformed = transformJasmineToVitest('spec.ts', input, reporter);
18-
const formattedTransformed = await format(transformed, { parser: 'typescript' });
19-
const formattedExpected = await format(expected, { parser: 'typescript' });
20-
21-
expect(formattedTransformed).toBe(formattedExpected);
22-
}
9+
import { expectTransformation } from './test-helpers';
2310

2411
describe('Jasmine to Vitest Transformer', () => {
2512
describe('Nested Transformations', () => {
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/**
2+
* @license
3+
* Copyright Google LLC All Rights Reserved.
4+
*
5+
* Use of this source code is governed by an MIT-style license that can be
6+
* found in the LICENSE file at https://angular.dev/license
7+
*/
8+
9+
import { logging } from '@angular-devkit/core';
10+
import { format } from 'prettier';
11+
import { transformJasmineToVitest } from './test-file-transformer';
12+
import { RefactorReporter } from './utils/refactor-reporter';
13+
14+
/**
15+
* A test helper to run the Jasmine to Vitest transformer on a given code
16+
* snippet and compare it to an expected output.
17+
*
18+
* This function automatically handles the setup of a `RefactorReporter` and
19+
* formats both the transformed and expected code using Prettier. This ensures
20+
* that test comparisons are consistent and not affected by minor formatting
21+
* differences.
22+
*
23+
* @param input The Jasmine code snippet to be transformed.
24+
* @param expected The expected Vitest code snippet after transformation.
25+
*/
26+
export async function expectTransformation(input: string, expected: string): Promise<void> {
27+
const logger = new logging.NullLogger();
28+
const reporter = new RefactorReporter(logger);
29+
const transformed = transformJasmineToVitest('spec.ts', input, reporter);
30+
const formattedTransformed = await format(transformed, { parser: 'typescript' });
31+
const formattedExpected = await format(expected, { parser: 'typescript' });
32+
33+
expect(formattedTransformed).toBe(formattedExpected);
34+
}

packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-lifecycle_spec.ts

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,7 @@
66
* found in the LICENSE file at https://angular.dev/license
77
*/
88

9-
import { logging } from '@angular-devkit/core';
10-
import { format } from 'prettier';
11-
import { transformJasmineToVitest } from '../test-file-transformer';
12-
import { RefactorReporter } from '../utils/refactor-reporter';
13-
14-
async function expectTransformation(input: string, expected: string): Promise<void> {
15-
const logger = new logging.NullLogger();
16-
const reporter = new RefactorReporter(logger);
17-
const transformed = transformJasmineToVitest('spec.ts', input, reporter);
18-
const formattedTransformed = await format(transformed, { parser: 'typescript' });
19-
const formattedExpected = await format(expected, { parser: 'typescript' });
20-
21-
expect(formattedTransformed).toBe(formattedExpected);
22-
}
9+
import { expectTransformation } from '../test-helpers';
2310

2411
describe('Jasmine to Vitest Transformer', () => {
2512
describe('transformDoneCallback', () => {

packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-matcher_spec.ts

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,7 @@
66
* found in the LICENSE file at https://angular.dev/license
77
*/
88

9-
import { logging } from '@angular-devkit/core';
10-
import { format } from 'prettier';
11-
import { transformJasmineToVitest } from '../test-file-transformer';
12-
import { RefactorReporter } from '../utils/refactor-reporter';
13-
14-
async function expectTransformation(input: string, expected: string): Promise<void> {
15-
const logger = new logging.NullLogger();
16-
const reporter = new RefactorReporter(logger);
17-
const transformed = transformJasmineToVitest('spec.ts', input, reporter);
18-
const formattedTransformed = await format(transformed, { parser: 'typescript' });
19-
const formattedExpected = await format(expected, { parser: 'typescript' });
20-
21-
expect(formattedTransformed).toBe(formattedExpected);
22-
}
9+
import { expectTransformation } from '../test-helpers';
2310

2411
describe('Jasmine to Vitest Transformer', () => {
2512
describe('transformAsymmetricMatchers', () => {

packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-misc_spec.ts

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,7 @@
66
* found in the LICENSE file at https://angular.dev/license
77
*/
88

9-
import { logging } from '@angular-devkit/core';
10-
import { format } from 'prettier';
11-
import { transformJasmineToVitest } from '../test-file-transformer';
12-
import { RefactorReporter } from '../utils/refactor-reporter';
13-
14-
async function expectTransformation(input: string, expected: string): Promise<void> {
15-
const logger = new logging.NullLogger();
16-
const reporter = new RefactorReporter(logger);
17-
const transformed = transformJasmineToVitest('spec.ts', input, reporter);
18-
const formattedTransformed = await format(transformed, { parser: 'typescript' });
19-
const formattedExpected = await format(expected, { parser: 'typescript' });
20-
21-
expect(formattedTransformed).toBe(formattedExpected);
22-
}
9+
import { expectTransformation } from '../test-helpers';
2310

2411
describe('Jasmine to Vitest Transformer', () => {
2512
describe('transformTimerMocks', () => {

packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,7 @@
66
* found in the LICENSE file at https://angular.dev/license
77
*/
88

9-
import { logging } from '@angular-devkit/core';
10-
import { format } from 'prettier';
11-
import { transformJasmineToVitest } from '../test-file-transformer';
12-
import { RefactorReporter } from '../utils/refactor-reporter';
13-
14-
async function expectTransformation(input: string, expected: string): Promise<void> {
15-
const logger = new logging.NullLogger();
16-
const reporter = new RefactorReporter(logger);
17-
const transformed = transformJasmineToVitest('spec.ts', input, reporter);
18-
const formattedTransformed = await format(transformed, { parser: 'typescript' });
19-
const formattedExpected = await format(expected, { parser: 'typescript' });
20-
21-
expect(formattedTransformed).toBe(formattedExpected);
22-
}
9+
import { expectTransformation } from '../test-helpers';
2310

2411
describe('Jasmine to Vitest Transformer', () => {
2512
describe('transformSpies', () => {

0 commit comments

Comments
 (0)