BREAKING CHANGE: previously deprecated @Component.directives and @Component.pipes support was removed. All the components and pipes now must be declarated via an NgModule. NgModule is the basic compilation block passed into the Angular compiler via Compiler#compileModuleSync or #compileModuleAsync. Because of this change, the Compiler#compileComponentAsync and #compileComponentSync were removed as well - any code doing compilation should compile module instead using the apis mentioned above. Lastly, since modules are the basic compilation unit, the ngUpgrade module was modified to always require an NgModule to be passed into the UpgradeAdapter's constructor - previously this was optional.
		
			
				
	
	
		
			98 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			3.6 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 {Component, ComponentMetadata, Directive, Injector} from '@angular/core';
 | |
| import {TestBed, inject} from '@angular/core/testing';
 | |
| 
 | |
| import {ViewMetadata} from '../core_private';
 | |
| import {MockDirectiveResolver} from '../testing';
 | |
| 
 | |
| export function main() {
 | |
|   describe('MockDirectiveResolver', () => {
 | |
|     var dirResolver: MockDirectiveResolver;
 | |
| 
 | |
|     beforeEach(() => {
 | |
|       TestBed.configureTestingModule(
 | |
|           {declarations: [SomeDirective, SomeOtherDirective, SomeComponent]});
 | |
|     });
 | |
| 
 | |
|     beforeEach(inject([Injector], (injector: Injector) => {
 | |
|       dirResolver = new MockDirectiveResolver(injector);
 | |
|     }));
 | |
| 
 | |
|     describe('Directive overriding', () => {
 | |
|       it('should fallback to the default DirectiveResolver when templates are not overridden',
 | |
|          () => {
 | |
|            var ngModule = dirResolver.resolve(SomeComponent);
 | |
|            expect(ngModule.selector).toEqual('cmp');
 | |
|          });
 | |
| 
 | |
|       it('should allow overriding the @Directive', () => {
 | |
|         dirResolver.setDirective(
 | |
|             SomeComponent, new ComponentMetadata({selector: 'someOtherSelector'}));
 | |
|         var metadata = dirResolver.resolve(SomeComponent);
 | |
|         expect(metadata.selector).toEqual('someOtherSelector');
 | |
|       });
 | |
|     });
 | |
| 
 | |
|     describe('View overriding', () => {
 | |
|       it('should fallback to the default ViewResolver when templates are not overridden', () => {
 | |
|         var view = <ComponentMetadata>dirResolver.resolve(SomeComponent);
 | |
|         expect(view.template).toEqual('template');
 | |
|       });
 | |
| 
 | |
|       it('should allow overriding the @View', () => {
 | |
|         dirResolver.setView(SomeComponent, new ViewMetadata({template: 'overridden template'}));
 | |
|         var view = <ComponentMetadata>dirResolver.resolve(SomeComponent);
 | |
|         expect(view.template).toEqual('overridden template');
 | |
|       });
 | |
| 
 | |
|       it('should allow overriding a view after it has been resolved', () => {
 | |
|         dirResolver.resolve(SomeComponent);
 | |
|         dirResolver.setView(SomeComponent, new ViewMetadata({template: 'overridden template'}));
 | |
|         var view = <ComponentMetadata>dirResolver.resolve(SomeComponent);
 | |
|         expect(view.template).toEqual('overridden template');
 | |
|       });
 | |
|     });
 | |
| 
 | |
|     describe('inline template definition overriding', () => {
 | |
|       it('should allow overriding the default template', () => {
 | |
|         dirResolver.setInlineTemplate(SomeComponent, 'overridden template');
 | |
|         var view = <ComponentMetadata>dirResolver.resolve(SomeComponent);
 | |
|         expect(view.template).toEqual('overridden template');
 | |
|       });
 | |
| 
 | |
|       it('should allow overriding an overridden @View', () => {
 | |
|         dirResolver.setView(SomeComponent, new ViewMetadata({template: 'overridden template'}));
 | |
|         dirResolver.setInlineTemplate(SomeComponent, 'overridden template x 2');
 | |
|         var view = <ComponentMetadata>dirResolver.resolve(SomeComponent);
 | |
|         expect(view.template).toEqual('overridden template x 2');
 | |
|       });
 | |
| 
 | |
|       it('should allow overriding a view after it has been resolved', () => {
 | |
|         dirResolver.resolve(SomeComponent);
 | |
|         dirResolver.setInlineTemplate(SomeComponent, 'overridden template');
 | |
|         var view = <ComponentMetadata>dirResolver.resolve(SomeComponent);
 | |
|         expect(view.template).toEqual('overridden template');
 | |
|       });
 | |
|     });
 | |
|   });
 | |
| }
 | |
| 
 | |
| @Directive({selector: 'some-directive'})
 | |
| class SomeDirective {
 | |
| }
 | |
| 
 | |
| @Component({selector: 'cmp', template: 'template'})
 | |
| class SomeComponent {
 | |
| }
 | |
| 
 | |
| @Directive({selector: 'some-other-directive'})
 | |
| class SomeOtherDirective {
 | |
| }
 |