Skip to content
This repository was archived by the owner on Aug 7, 2021. It is now read-only.

Commit 61838bf

Browse files
committed
test: add unit tests for bootstrap transformer
1 parent fa70d1c commit 61838bf

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed
+97
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
import { tags } from '@angular-devkit/core';
2+
import { createTypescriptContext, transformTypescript } from "@ngtools/webpack/src/transformers";
3+
import { nsReplaceBootstrap } from './ns-replace-bootstrap';
4+
import { AngularCompilerPlugin } from '@ngtools/webpack';
5+
6+
describe('@ngtools/webpack transformers', () => {
7+
describe('replace_bootstrap', () => {
8+
it('should replace bootstrap', () => {
9+
const input = tags.stripIndent`
10+
import { platformNativeScriptDynamic } from "nativescript-angular/platform";
11+
import { AppModule } from "./app.module";
12+
13+
platformNativeScriptDynamic().bootstrapModule(AppModule);
14+
`;
15+
16+
const output = tags.stripIndent`
17+
import * as __NgCli_bootstrap_1 from "nativescript-angular/platform-static";
18+
import * as __NgCli_bootstrap_2 from "./app/app.module.ngfactory";
19+
20+
__NgCli_bootstrap_1.platformNativeScript().bootstrapModuleFactory(__NgCli_bootstrap_2.AppModuleNgFactory);
21+
`;
22+
23+
const { program, compilerHost } = createTypescriptContext(input);
24+
const ngCompiler = <AngularCompilerPlugin>{
25+
typeChecker: program.getTypeChecker(),
26+
entryModule: {
27+
path: '/project/src/app/app.module',
28+
className: 'AppModule',
29+
},
30+
};
31+
const transformer = nsReplaceBootstrap(() => ngCompiler);
32+
const result = transformTypescript(undefined, [transformer], program, compilerHost);
33+
34+
expect(tags.oneLine`${result}`).toEqual(tags.oneLine`${output}`);
35+
});
36+
37+
it('should replace bootstrap when barrel files are used', () => {
38+
const input = tags.stripIndent`
39+
import { platformNativeScriptDynamic } from "nativescript-angular/platform";
40+
import { AppModule } from './app';
41+
42+
platformNativeScriptDynamic().bootstrapModule(AppModule);
43+
`;
44+
45+
const output = tags.stripIndent`
46+
import * as __NgCli_bootstrap_1 from "nativescript-angular/platform-static";
47+
import * as __NgCli_bootstrap_2 from "./app/app.module.ngfactory";
48+
49+
__NgCli_bootstrap_1.platformNativeScript().bootstrapModuleFactory(__NgCli_bootstrap_2.AppModuleNgFactory);
50+
`;
51+
52+
const { program, compilerHost } = createTypescriptContext(input);
53+
const ngCompiler = <AngularCompilerPlugin>{
54+
typeChecker: program.getTypeChecker(),
55+
entryModule: {
56+
path: '/project/src/app/app.module',
57+
className: 'AppModule',
58+
},
59+
};
60+
const transformer = nsReplaceBootstrap(() => ngCompiler);
61+
const result = transformTypescript(undefined, [transformer], program, compilerHost);
62+
63+
expect(tags.oneLine`${result}`).toEqual(tags.oneLine`${output}`);
64+
});
65+
66+
it('should always import platform nativescript first', () => {
67+
const input = tags.stripIndent`
68+
import { platformNativeScriptDynamic } from "nativescript-angular/platform";
69+
import { AppModule } from "./app.module";
70+
import "./shared/kinvey.common";
71+
72+
platformNativeScriptDynamic().bootstrapModule(AppModule);
73+
`;
74+
75+
const output = tags.stripIndent`
76+
import * as __NgCli_bootstrap_1 from "nativescript-angular/platform-static";
77+
import * as __NgCli_bootstrap_2 from "./app/app.module.ngfactory";
78+
import "./shared/kinvey.common";
79+
80+
__NgCli_bootstrap_1.platformNativeScript().bootstrapModuleFactory(__NgCli_bootstrap_2.AppModuleNgFactory);
81+
`;
82+
83+
const { program, compilerHost } = createTypescriptContext(input);
84+
const ngCompiler = <AngularCompilerPlugin>{
85+
typeChecker: program.getTypeChecker(),
86+
entryModule: {
87+
path: '/project/src/app/app.module',
88+
className: 'AppModule',
89+
},
90+
};
91+
const transformer = nsReplaceBootstrap(() => ngCompiler);
92+
const result = transformTypescript(undefined, [transformer], program, compilerHost);
93+
94+
expect(tags.oneLine`${result}`).toEqual(tags.oneLine`${output}`);
95+
});
96+
});
97+
});

0 commit comments

Comments
 (0)