66 * found in the LICENSE file at https://angular.io/license
77 */
88
9- import { DefaultTimeout , runTargetSpec } from '@angular-devkit/architect/testing' ;
9+ import { DefaultTimeout , TestLogger , runTargetSpec } from '@angular-devkit/architect/testing' ;
1010import { join , normalize } from '@angular-devkit/core' ;
11- import { tap } from 'rxjs/operators' ;
11+ import { take , tap } from 'rxjs/operators' ;
1212import { BrowserBuilderSchema } from '../../src' ;
1313import { browserTargetSpec , host } from '../utils' ;
1414
@@ -70,6 +70,7 @@ export const lazyModuleImport: { [path: string]: string } = {
7070 ` ,
7171} ;
7272
73+ // tslint:disable-next-line:no-big-function
7374describe ( 'Browser Builder lazy modules' , ( ) => {
7475
7576 const outputPath = normalize ( 'dist' ) ;
@@ -89,6 +90,28 @@ describe('Browser Builder lazy modules', () => {
8990 ) . toPromise ( ) . then ( done , done . fail ) ;
9091 } ) ;
9192
93+ it ( 'should show error when lazy route is invalid on watch mode AOT' , ( done ) => {
94+ host . writeMultipleFiles ( lazyModuleFiles ) ;
95+ host . writeMultipleFiles ( lazyModuleImport ) ;
96+ host . replaceInFile (
97+ 'src/app/app.module.ts' ,
98+ 'lazy.module#LazyModule' ,
99+ 'invalid.module#LazyModule' ,
100+ ) ;
101+
102+ const logger = new TestLogger ( 'rebuild-lazy-errors' ) ;
103+ const overrides = { watch : true , aot : true } ;
104+ runTargetSpec ( host , browserTargetSpec , overrides , DefaultTimeout , logger ) . pipe (
105+ tap ( ( buildEvent ) => expect ( buildEvent . success ) . toBe ( false ) ) ,
106+ tap ( ( ) => {
107+ expect ( logger . includes ( 'Could not resolve module' ) ) . toBe ( true ) ;
108+ logger . clear ( ) ;
109+ host . appendToFile ( 'src/main.ts' , ' ' ) ;
110+ } ) ,
111+ take ( 2 ) ,
112+ ) . toPromise ( ) . then ( done , done . fail ) ;
113+ } ) ;
114+
92115 it ( 'supports lazy bundle for lazy routes with AOT' , ( done ) => {
93116 host . writeMultipleFiles ( lazyModuleFiles ) ;
94117 host . writeMultipleFiles ( lazyModuleImport ) ;
0 commit comments