Add two factory static functions to Injector: resolveAndCreate and fromResolvedBindings. We want to avoid resolution and flattening every time we create a new injector. This commit allows the user to cache resolved bindings and reuse them.
		
			
				
	
	
		
			63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import {
 | |
|   afterEach,
 | |
|   AsyncTestCompleter,
 | |
|   beforeEach,
 | |
|   ddescribe,
 | |
|   describe,
 | |
|   expect,
 | |
|   iit,
 | |
|   inject,
 | |
|   it,
 | |
|   xit,
 | |
| } from 'angular2/test_lib';
 | |
| 
 | |
| import { StringMap, ListWrapper } from 'angular2/src/facade/collection';
 | |
| import { isPresent, StringWrapper } from 'angular2/src/facade/lang';
 | |
| import { PromiseWrapper } from 'angular2/src/facade/async';
 | |
| 
 | |
| import { WebDriverExtension, bind, Injector, Options } from 'benchpress/common';
 | |
| 
 | |
| export function main() {
 | |
|   function createExtension(ids, caps) {
 | |
|     return Injector.resolveAndCreate([
 | |
|       ListWrapper.map(ids, (id) => bind(id).toValue(new MockExtension(id)) ),
 | |
|       bind(Options.CAPABILITIES).toValue(caps),
 | |
|       WebDriverExtension.bindTo(ids)
 | |
|     ]).asyncGet(WebDriverExtension);
 | |
|   }
 | |
| 
 | |
|   describe('WebDriverExtension.bindTo', () => {
 | |
| 
 | |
|     it('should bind the extension that matches the capabilities', inject([AsyncTestCompleter], (async) => {
 | |
|       createExtension(['m1', 'm2', 'm3'], {'browser': 'm2'}).then( (m) => {
 | |
|         expect(m.id).toEqual('m2');
 | |
|         async.done();
 | |
|       });
 | |
|     }));
 | |
| 
 | |
|     it('should throw if there is no match', inject([AsyncTestCompleter], (async) => {
 | |
|       PromiseWrapper.catchError(
 | |
|         createExtension(['m1'], {'browser': 'm2'}),
 | |
|         (err) => {
 | |
|           expect(isPresent(err)).toBe(true);
 | |
|           async.done();
 | |
|         }
 | |
|       );
 | |
|     }));
 | |
| 
 | |
|   });
 | |
| }
 | |
| 
 | |
| class MockExtension extends WebDriverExtension {
 | |
|   id:string;
 | |
| 
 | |
|   constructor(id) {
 | |
|     super();
 | |
|     this.id = id;
 | |
|   }
 | |
| 
 | |
|   supports(capabilities:StringMap):boolean {
 | |
|     return StringWrapper.equals(capabilities['browser'], this.id);
 | |
|   }
 | |
| }
 |