Skip to content

Commit 07b7772

Browse files
committed
test: test lazy-loading syntax for VE and Ivy
1 parent 9ebe1df commit 07b7772

File tree

1 file changed

+43
-10
lines changed

1 file changed

+43
-10
lines changed

tests/legacy-cli/e2e/tests/ivy/ivy-lazy-load.ts renamed to tests/legacy-cli/e2e/tests/build/lazy-load-syntax.ts

+43-10
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,35 @@
55
* Use of this source code is governed by an MIT-style license that can be
66
* found in the LICENSE file at https://angular.io/license
77
*/
8-
import { readFile, replaceInFile, writeFile } from '../../utils/fs';
8+
import { getGlobalVariable } from '../../utils/env';
9+
import { prependToFile, readFile, replaceInFile, writeFile } from '../../utils/fs';
910
import { ng } from '../../utils/process';
10-
import { createProject, updateJsonFile } from '../../utils/project';
11+
import { updateJsonFile } from '../../utils/project';
1112
import { expectToFail } from '../../utils/utils';
1213

1314
export default async function () {
14-
const projectName = 'ivy-lazy-loading';
15+
const argv = getGlobalVariable('argv');
16+
const ivyProject = argv['ivy'];
17+
const projectName = 'test-project';
1518
const appRoutingModulePath = 'src/app/app-routing.module.ts';
1619

17-
// Make Ivy project.
18-
await createProject(projectName, '--enable-ivy', '--routing');
20+
// Add app routing.
21+
// This is done automatically on a new app with --routing.
22+
await writeFile('./src/app-routing.module.ts', `
23+
import { NgModule } from '@angular/core';
24+
import { Routes, RouterModule } from '@angular/router';
25+
26+
const routes: Routes = [];
27+
28+
@NgModule({
29+
imports: [RouterModule.forRoot(routes)],
30+
exports: [RouterModule]
31+
})
32+
export class AppRoutingModule { }
33+
`);
34+
await prependToFile('src/app/app.module.ts',
35+
`import { AppRoutingModule } from './app-routing.module';`);
36+
await replaceInFile('src/app/app.module.ts', `imports: [`, `imports: [ AppRoutingModule,`);
1937

2038
const originalAppRoutingModule = await readFile(appRoutingModulePath);
2139
// helper to replace loadChildren
@@ -70,6 +88,7 @@ export default async function () {
7088
});
7189

7290
// Test `import()` style lazy load.
91+
// Both Ivy and View Engine should support it.
7392
await replaceLoadChildren(`() => import('./lazy/lazy.module').then(m => m.LazyModule)`);
7493
await ng('e2e');
7594
await ng('e2e', '--prod');
@@ -78,13 +97,27 @@ export default async function () {
7897
await replaceLoadChildren(`'./lazy/lazy.module#LazyModule'`);
7998
await replaceInFile('tsconfig.app.json', `"allowEmptyCodegenFiles": false`,
8099
`"allowEmptyCodegenFiles": true`);
81-
await expectToFail(() => ng('e2e')); // Currently broken.
82-
await ng('e2e', '--prod');
100+
if (ivyProject) {
101+
// Ivy should not support the string syntax.
102+
await expectToFail(() => ng('e2e'));
103+
await expectToFail(() => ng('e2e', '--prod'));
104+
} else {
105+
// View engine should support the string syntax.
106+
await ng('e2e');
107+
await ng('e2e', '--prod');
108+
}
83109

84110
// Test string import without factory shims.
85111
await replaceLoadChildren(`'./lazy/lazy.module#LazyModule'`);
86112
await replaceInFile('tsconfig.app.json', `"allowEmptyCodegenFiles": true`,
87-
`"allowEmptyCodegenFiles": false`);
88-
await expectToFail(() => ng('e2e')); // Not supported.
89-
await expectToFail(() => ng('e2e', '--prod')); // Not supported.
113+
`"allowEmptyCodegenFiles": false`);
114+
if (ivyProject) {
115+
// Ivy should not support the string syntax.
116+
await expectToFail(() => ng('e2e'));
117+
await expectToFail(() => ng('e2e', '--prod'));
118+
} else {
119+
// View engine should support the string syntax.
120+
await ng('e2e');
121+
await ng('e2e', '--prod');
122+
}
90123
}

0 commit comments

Comments
 (0)