| 
									
										
										
										
											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 {Compiler, ComponentMetadata, DirectiveMetadata, Injectable, Injector} from '@angular/core'; | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | import {DirectiveResolver} from '../src/directive_resolver'; | 
					
						
							| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  | import {Map} from '../src/facade/collection'; | 
					
						
							|  |  |  | import {Type, isPresent} from '../src/facade/lang'; | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-08 10:14:57 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 08:46:43 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-03 15:49:09 -08:00
										 |  |  | /** | 
					
						
							|  |  |  |  * An implementation of {@link DirectiveResolver} that allows overriding | 
					
						
							|  |  |  |  * various properties of directives. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2015-12-03 09:06:42 -08:00
										 |  |  | @Injectable() | 
					
						
							| 
									
										
										
										
											2015-09-08 10:14:57 -07:00
										 |  |  | export class MockDirectiveResolver extends DirectiveResolver { | 
					
						
							| 
									
										
										
										
											2015-10-10 22:11:13 -07:00
										 |  |  |   private _providerOverrides = new Map<Type, any[]>(); | 
					
						
							|  |  |  |   private viewProviderOverrides = new Map<Type, any[]>(); | 
					
						
							| 
									
										
										
										
											2015-09-08 10:14:57 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 08:46:43 -07:00
										 |  |  |   constructor(private _injector: Injector) { super(); } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   private get _compiler(): Compiler { return this._injector.get(Compiler); } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-08 10:14:57 -07:00
										 |  |  |   resolve(type: Type): DirectiveMetadata { | 
					
						
							|  |  |  |     var dm = super.resolve(type); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-10 22:11:13 -07:00
										 |  |  |     var providerOverrides = this._providerOverrides.get(type); | 
					
						
							|  |  |  |     var viewProviderOverrides = this.viewProviderOverrides.get(type); | 
					
						
							| 
									
										
										
										
											2015-09-08 10:14:57 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-10 22:11:13 -07:00
										 |  |  |     var providers = dm.providers; | 
					
						
							|  |  |  |     if (isPresent(providerOverrides)) { | 
					
						
							| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  |       var originalViewProviders: any[] = isPresent(dm.providers) ? dm.providers : []; | 
					
						
							| 
									
										
										
										
											2016-01-06 14:13:44 -08:00
										 |  |  |       providers = originalViewProviders.concat(providerOverrides); | 
					
						
							| 
									
										
										
										
											2015-09-08 10:14:57 -07:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (dm instanceof ComponentMetadata) { | 
					
						
							| 
									
										
										
										
											2015-10-10 22:11:13 -07:00
										 |  |  |       var viewProviders = dm.viewProviders; | 
					
						
							|  |  |  |       if (isPresent(viewProviderOverrides)) { | 
					
						
							| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  |         var originalViewProviders: any[] = isPresent(dm.viewProviders) ? dm.viewProviders : []; | 
					
						
							| 
									
										
										
										
											2016-01-06 14:13:44 -08:00
										 |  |  |         viewProviders = originalViewProviders.concat(viewProviderOverrides); | 
					
						
							| 
									
										
										
										
											2015-09-08 10:14:57 -07:00
										 |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       return new ComponentMetadata({ | 
					
						
							|  |  |  |         selector: dm.selector, | 
					
						
							| 
									
										
										
										
											2015-09-30 20:59:23 -07:00
										 |  |  |         inputs: dm.inputs, | 
					
						
							|  |  |  |         outputs: dm.outputs, | 
					
						
							| 
									
										
										
										
											2015-09-08 10:14:57 -07:00
										 |  |  |         host: dm.host, | 
					
						
							|  |  |  |         exportAs: dm.exportAs, | 
					
						
							| 
									
										
										
										
											2015-09-14 15:59:09 -07:00
										 |  |  |         moduleId: dm.moduleId, | 
					
						
							| 
									
										
										
										
											2015-09-17 18:45:14 -07:00
										 |  |  |         queries: dm.queries, | 
					
						
							| 
									
										
										
										
											2015-09-08 10:14:57 -07:00
										 |  |  |         changeDetection: dm.changeDetection, | 
					
						
							| 
									
										
										
										
											2015-10-10 22:11:13 -07:00
										 |  |  |         providers: providers, | 
					
						
							| 
									
										
										
										
											2016-06-22 14:06:23 -07:00
										 |  |  |         viewProviders: viewProviders, | 
					
						
							|  |  |  |         precompile: dm.precompile | 
					
						
							| 
									
										
										
										
											2015-09-08 10:14:57 -07:00
										 |  |  |       }); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return new DirectiveMetadata({ | 
					
						
							|  |  |  |       selector: dm.selector, | 
					
						
							| 
									
										
										
										
											2015-09-30 20:59:23 -07:00
										 |  |  |       inputs: dm.inputs, | 
					
						
							|  |  |  |       outputs: dm.outputs, | 
					
						
							| 
									
										
										
										
											2015-09-08 10:14:57 -07:00
										 |  |  |       host: dm.host, | 
					
						
							| 
									
										
										
										
											2015-10-10 22:11:13 -07:00
										 |  |  |       providers: providers, | 
					
						
							| 
									
										
										
										
											2015-09-08 10:14:57 -07:00
										 |  |  |       exportAs: dm.exportAs, | 
					
						
							| 
									
										
										
										
											2015-09-17 18:45:14 -07:00
										 |  |  |       queries: dm.queries | 
					
						
							| 
									
										
										
										
											2015-09-08 10:14:57 -07:00
										 |  |  |     }); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-01 19:37:24 -05:00
										 |  |  |   setProvidersOverride(type: Type, providers: any[]): void { | 
					
						
							|  |  |  |     this._providerOverrides.set(type, providers); | 
					
						
							| 
									
										
										
										
											2016-06-24 08:46:43 -07:00
										 |  |  |     this._compiler.clearCacheFor(type); | 
					
						
							| 
									
										
										
										
											2015-10-10 22:11:13 -07:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-01 19:37:24 -05:00
										 |  |  |   setViewProvidersOverride(type: Type, viewProviders: any[]): void { | 
					
						
							|  |  |  |     this.viewProviderOverrides.set(type, viewProviders); | 
					
						
							| 
									
										
										
										
											2016-06-24 08:46:43 -07:00
										 |  |  |     this._compiler.clearCacheFor(type); | 
					
						
							| 
									
										
										
										
											2015-09-08 10:14:57 -07:00
										 |  |  |   } | 
					
						
							|  |  |  | } |