| 
									
										
										
										
											2016-06-23 09:47:54 -07:00
										 |  |  | /** | 
					
						
							|  |  |  |  * @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
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 08:46:43 -07:00
										 |  |  | import {AnimationEntryMetadata, Compiler, ComponentFactory, Injectable, Injector, NgZone, ViewMetadata} from '@angular/core'; | 
					
						
							| 
									
										
										
										
											2016-06-24 17:35:01 -07:00
										 |  |  | import {ComponentFixture, ComponentFixtureNoNgZone, TestComponentBuilder} from '@angular/core/testing'; | 
					
						
							| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  | import {DirectiveResolver, ViewResolver} from '../index'; | 
					
						
							| 
									
										
										
										
											2016-06-24 17:35:01 -07:00
										 |  |  | import {MapWrapper} from '../src/facade/collection'; | 
					
						
							| 
									
										
										
										
											2016-06-24 08:46:43 -07:00
										 |  |  | import {ConcreteType, IS_DART, Type, isPresent} from '../src/facade/lang'; | 
					
						
							| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 12:41:49 -07:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2016-06-24 17:35:01 -07:00
										 |  |  |  * @deprecated Import TestComponentRenderer from @angular/core/testing | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | export {TestComponentRenderer} from '@angular/core/testing'; | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * @deprecated Import TestComponentBuilder from @angular/core/testing | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | export {TestComponentBuilder} from '@angular/core/testing'; | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * @deprecated Import ComponentFixture from @angular/core/testing | 
					
						
							| 
									
										
										
										
											2016-06-24 12:41:49 -07:00
										 |  |  |  */ | 
					
						
							|  |  |  | export {ComponentFixture} from '@angular/core/testing'; | 
					
						
							| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2016-06-24 17:35:01 -07:00
										 |  |  |  * @deprecated Import ComponentFixtureNoNgZone from @angular/core/testing | 
					
						
							| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2016-06-24 17:35:01 -07:00
										 |  |  | export {ComponentFixtureNoNgZone} from '@angular/core/testing'; | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * @deprecated Import ComponentFixtureAutoDetect from @angular/core/testing | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | export {ComponentFixtureAutoDetect} from '@angular/core/testing'; | 
					
						
							| 
									
										
										
										
											2016-04-26 16:38:54 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-15 16:42:52 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 08:46:43 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-15 16:42:52 -07:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2016-06-24 17:35:01 -07:00
										 |  |  |  * A TestComponentBuilder that allows overriding based on the compiler. | 
					
						
							| 
									
										
										
										
											2015-05-15 16:42:52 -07:00
										 |  |  |  */ | 
					
						
							|  |  |  | @Injectable() | 
					
						
							| 
									
										
										
										
											2016-06-24 17:35:01 -07:00
										 |  |  | export class OverridingTestComponentBuilder extends TestComponentBuilder { | 
					
						
							| 
									
										
										
										
											2015-10-09 17:21:25 -07:00
										 |  |  |   /** @internal */ | 
					
						
							| 
									
										
										
										
											2015-09-29 11:11:06 -07:00
										 |  |  |   _bindingsOverrides = new Map<Type, any[]>(); | 
					
						
							| 
									
										
										
										
											2015-10-09 17:21:25 -07:00
										 |  |  |   /** @internal */ | 
					
						
							| 
									
										
										
										
											2015-09-29 11:11:06 -07:00
										 |  |  |   _directiveOverrides = new Map<Type, Map<Type, Type>>(); | 
					
						
							| 
									
										
										
										
											2015-10-09 17:21:25 -07:00
										 |  |  |   /** @internal */ | 
					
						
							| 
									
										
										
										
											2015-09-29 11:11:06 -07:00
										 |  |  |   _templateOverrides = new Map<Type, string>(); | 
					
						
							| 
									
										
										
										
											2015-10-09 17:21:25 -07:00
										 |  |  |   /** @internal */ | 
					
						
							| 
									
										
										
										
											2016-05-25 12:46:22 -07:00
										 |  |  |   _animationOverrides = new Map<Type, AnimationEntryMetadata[]>(); | 
					
						
							|  |  |  |   /** @internal */ | 
					
						
							| 
									
										
										
										
											2015-09-29 11:11:06 -07:00
										 |  |  |   _viewBindingsOverrides = new Map<Type, any[]>(); | 
					
						
							| 
									
										
										
										
											2015-10-09 17:21:25 -07:00
										 |  |  |   /** @internal */ | 
					
						
							| 
									
										
										
										
											2015-09-29 11:11:06 -07:00
										 |  |  |   _viewOverrides = new Map<Type, ViewMetadata>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 17:35:01 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |   constructor(injector: Injector) { super(injector); } | 
					
						
							| 
									
										
										
										
											2015-05-15 16:42:52 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-09 17:21:25 -07:00
										 |  |  |   /** @internal */ | 
					
						
							| 
									
										
										
										
											2016-06-24 17:35:01 -07:00
										 |  |  |   _clone(): OverridingTestComponentBuilder { | 
					
						
							|  |  |  |     let clone = new OverridingTestComponentBuilder(this._injector); | 
					
						
							| 
									
										
										
										
											2015-05-15 16:42:52 -07:00
										 |  |  |     clone._viewOverrides = MapWrapper.clone(this._viewOverrides); | 
					
						
							|  |  |  |     clone._directiveOverrides = MapWrapper.clone(this._directiveOverrides); | 
					
						
							|  |  |  |     clone._templateOverrides = MapWrapper.clone(this._templateOverrides); | 
					
						
							| 
									
										
										
										
											2016-01-06 14:13:44 -08:00
										 |  |  |     clone._bindingsOverrides = MapWrapper.clone(this._bindingsOverrides); | 
					
						
							|  |  |  |     clone._viewBindingsOverrides = MapWrapper.clone(this._viewBindingsOverrides); | 
					
						
							| 
									
										
										
										
											2015-05-15 16:42:52 -07:00
										 |  |  |     return clone; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 17:35:01 -07:00
										 |  |  |   overrideTemplate(componentType: Type, template: string): OverridingTestComponentBuilder { | 
					
						
							| 
									
										
										
										
											2016-04-26 16:38:54 -07:00
										 |  |  |     let clone = this._clone(); | 
					
						
							| 
									
										
										
										
											2015-06-17 16:21:40 -07:00
										 |  |  |     clone._templateOverrides.set(componentType, template); | 
					
						
							| 
									
										
										
										
											2015-05-15 16:42:52 -07:00
										 |  |  |     return clone; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |   overrideAnimations(componentType: Type, animations: AnimationEntryMetadata[]): | 
					
						
							|  |  |  |       TestComponentBuilder { | 
					
						
							| 
									
										
										
										
											2016-05-25 12:46:22 -07:00
										 |  |  |     var clone = this._clone(); | 
					
						
							|  |  |  |     clone._animationOverrides.set(componentType, animations); | 
					
						
							|  |  |  |     return clone; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 17:35:01 -07:00
										 |  |  |   overrideView(componentType: Type, view: ViewMetadata): OverridingTestComponentBuilder { | 
					
						
							| 
									
										
										
										
											2016-04-26 16:38:54 -07:00
										 |  |  |     let clone = this._clone(); | 
					
						
							| 
									
										
										
										
											2015-06-17 16:21:40 -07:00
										 |  |  |     clone._viewOverrides.set(componentType, view); | 
					
						
							| 
									
										
										
										
											2015-05-15 16:42:52 -07:00
										 |  |  |     return clone; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 17:35:01 -07:00
										 |  |  |   overrideDirective(componentType: Type, from: Type, to: Type): OverridingTestComponentBuilder { | 
					
						
							| 
									
										
										
										
											2016-04-26 16:38:54 -07:00
										 |  |  |     let clone = this._clone(); | 
					
						
							|  |  |  |     let overridesForComponent = clone._directiveOverrides.get(componentType); | 
					
						
							| 
									
										
										
										
											2015-05-15 16:42:52 -07:00
										 |  |  |     if (!isPresent(overridesForComponent)) { | 
					
						
							| 
									
										
										
										
											2015-09-29 11:11:06 -07:00
										 |  |  |       clone._directiveOverrides.set(componentType, new Map<Type, Type>()); | 
					
						
							| 
									
										
										
										
											2015-06-17 16:21:40 -07:00
										 |  |  |       overridesForComponent = clone._directiveOverrides.get(componentType); | 
					
						
							| 
									
										
										
										
											2015-05-15 16:42:52 -07:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-06-17 16:21:40 -07:00
										 |  |  |     overridesForComponent.set(from, to); | 
					
						
							| 
									
										
										
										
											2015-05-15 16:42:52 -07:00
										 |  |  |     return clone; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 17:35:01 -07:00
										 |  |  |   overrideProviders(type: Type, providers: any[]): OverridingTestComponentBuilder { | 
					
						
							| 
									
										
										
										
											2016-04-26 16:38:54 -07:00
										 |  |  |     let clone = this._clone(); | 
					
						
							| 
									
										
										
										
											2015-10-10 22:11:13 -07:00
										 |  |  |     clone._bindingsOverrides.set(type, providers); | 
					
						
							| 
									
										
										
										
											2015-09-08 10:14:57 -07:00
										 |  |  |     return clone; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 17:35:01 -07:00
										 |  |  |   overrideViewProviders(type: Type, providers: any[]): OverridingTestComponentBuilder { | 
					
						
							| 
									
										
										
										
											2016-04-26 16:38:54 -07:00
										 |  |  |     let clone = this._clone(); | 
					
						
							| 
									
										
										
										
											2015-10-10 22:11:13 -07:00
										 |  |  |     clone._viewBindingsOverrides.set(type, providers); | 
					
						
							| 
									
										
										
										
											2015-09-08 10:14:57 -07:00
										 |  |  |     return clone; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 08:46:43 -07:00
										 |  |  |   createAsync<T>(rootComponentType: ConcreteType<T>): Promise<ComponentFixture<T>> { | 
					
						
							|  |  |  |     this._applyMetadataOverrides(); | 
					
						
							|  |  |  |     return super.createAsync(rootComponentType); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   createSync<T>(rootComponentType: ConcreteType<T>): ComponentFixture<T> { | 
					
						
							|  |  |  |     this._applyMetadataOverrides(); | 
					
						
							|  |  |  |     return super.createSync(rootComponentType); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   private _applyMetadataOverrides() { | 
					
						
							|  |  |  |     let mockDirectiveResolver = this._injector.get(DirectiveResolver); | 
					
						
							|  |  |  |     let mockViewResolver = this._injector.get(ViewResolver); | 
					
						
							|  |  |  |     this._viewOverrides.forEach((view, type) => { mockViewResolver.setView(type, view); }); | 
					
						
							|  |  |  |     this._templateOverrides.forEach( | 
					
						
							|  |  |  |         (template, type) => mockViewResolver.setInlineTemplate(type, template)); | 
					
						
							|  |  |  |     this._animationOverrides.forEach( | 
					
						
							|  |  |  |         (animationsEntry, type) => mockViewResolver.setAnimations(type, animationsEntry)); | 
					
						
							|  |  |  |     this._directiveOverrides.forEach((overrides, component) => { | 
					
						
							|  |  |  |       overrides.forEach( | 
					
						
							|  |  |  |           (to, from) => { mockViewResolver.overrideViewDirective(component, from, to); }); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |     this._bindingsOverrides.forEach( | 
					
						
							|  |  |  |         (bindings, type) => mockDirectiveResolver.setProvidersOverride(type, bindings)); | 
					
						
							|  |  |  |     this._viewBindingsOverrides.forEach( | 
					
						
							|  |  |  |         (bindings, type) => mockDirectiveResolver.setViewProvidersOverride(type, bindings)); | 
					
						
							| 
									
										
										
										
											2015-05-15 16:42:52 -07:00
										 |  |  |   } | 
					
						
							|  |  |  | } |