| 
									
										
										
										
											2016-04-26 13:06:50 -07:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Wraps a test function in an asynchronous test zone. The test will automatically | 
					
						
							|  |  |  |  * complete when all asynchronous calls within this zone are done. Can be used | 
					
						
							|  |  |  |  * to wrap an {@link inject} call. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Example: | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * ```
 | 
					
						
							|  |  |  |  * it('...', async(inject([AClass], (object) => { | 
					
						
							|  |  |  |  *   object.doSomething.then(() => { | 
					
						
							|  |  |  |  *     expect(...); | 
					
						
							|  |  |  |  *   }) | 
					
						
							|  |  |  |  * }); | 
					
						
							|  |  |  |  * ```
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | export function async(fn: Function): Function { | 
					
						
							| 
									
										
										
										
											2016-05-26 13:33:53 -07:00
										 |  |  |   return () => new Promise<void>((finishCallback, failCallback) => { | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |            var AsyncTestZoneSpec = (Zone as any /** TODO #9100 */)['AsyncTestZoneSpec']; | 
					
						
							|  |  |  |            var testZoneSpec = new AsyncTestZoneSpec(finishCallback, failCallback, 'test'); | 
					
						
							|  |  |  |            var testZone = Zone.current.fork(testZoneSpec); | 
					
						
							|  |  |  |            return testZone.run(fn); | 
					
						
							|  |  |  |          }); | 
					
						
							| 
									
										
										
										
											2016-04-26 13:06:50 -07:00
										 |  |  | } |