71 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| /**
 | |
|  * @license
 | |
|  * Copyright Google Inc. All Rights Reserved.
 | |
|  *
 | |
|  * Use of this source code is governed by an MIT-style license that can be
 | |
|  * found in the LICENSE file at https://angular.io/license
 | |
|  */
 | |
| 
 | |
| import {NgModuleResolver} from '@angular/compiler/src/ng_module_resolver';
 | |
| import {ɵstringify as stringify} from '@angular/core';
 | |
| import {NgModule} from '@angular/core/src/metadata';
 | |
| 
 | |
| class SomeClass1 {}
 | |
| class SomeClass2 {}
 | |
| class SomeClass3 {}
 | |
| class SomeClass4 {}
 | |
| class SomeClass5 {}
 | |
| 
 | |
| @NgModule({
 | |
|   declarations: [SomeClass1],
 | |
|   imports: [SomeClass2],
 | |
|   exports: [SomeClass3],
 | |
|   providers: [SomeClass4],
 | |
|   entryComponents: [SomeClass5]
 | |
| })
 | |
| class SomeModule {
 | |
| }
 | |
| 
 | |
| class SimpleClass {}
 | |
| 
 | |
| export function main() {
 | |
|   describe('NgModuleResolver', () => {
 | |
|     let resolver: NgModuleResolver;
 | |
| 
 | |
|     beforeEach(() => { resolver = new NgModuleResolver(); });
 | |
| 
 | |
|     it('should read out the metadata from the class', () => {
 | |
|       const moduleMetadata = resolver.resolve(SomeModule);
 | |
|       expect(moduleMetadata).toEqual(new NgModule({
 | |
|         declarations: [SomeClass1],
 | |
|         imports: [SomeClass2],
 | |
|         exports: [SomeClass3],
 | |
|         providers: [SomeClass4],
 | |
|         entryComponents: [SomeClass5]
 | |
|       }));
 | |
|     });
 | |
| 
 | |
|     it('should throw when simple class has no NgModule decorator', () => {
 | |
|       expect(() => resolver.resolve(SimpleClass))
 | |
|           .toThrowError(`No NgModule metadata found for '${stringify(SimpleClass)}'.`);
 | |
|     });
 | |
| 
 | |
|     it('should support inheriting the metadata', function() {
 | |
|       @NgModule({id: 'p'})
 | |
|       class Parent {
 | |
|       }
 | |
| 
 | |
|       class ChildNoDecorator extends Parent {}
 | |
| 
 | |
|       @NgModule({id: 'c'})
 | |
|       class ChildWithDecorator extends Parent {
 | |
|       }
 | |
| 
 | |
|       expect(resolver.resolve(ChildNoDecorator)).toEqual(new NgModule({id: 'p'}));
 | |
| 
 | |
|       expect(resolver.resolve(ChildWithDecorator)).toEqual(new NgModule({id: 'c'}));
 | |
|     });
 | |
| 
 | |
|   });
 | |
| }
 |