| 
									
										
										
										
											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-04-28 17:50:03 -07:00
										 |  |  | import {provide} from '../index'; | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  | import {StringMapWrapper} from '../src/facade/collection'; | 
					
						
							|  |  |  | import {Math, global, isFunction, isPromise} from '../src/facade/lang'; | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  | import {AsyncTestCompleter} from './async_test_completer'; | 
					
						
							|  |  |  | import {getTestInjector, inject} from './test_injector'; | 
					
						
							| 
									
										
										
										
											2015-10-08 15:33:17 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-31 15:15:38 -07:00
										 |  |  | export {MockAnimationDriver} from './animation/mock_animation_driver'; | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  | export {MockAnimationPlayer} from './animation/mock_animation_player'; | 
					
						
							|  |  |  | export {AsyncTestCompleter} from './async_test_completer'; | 
					
						
							|  |  |  | export {inject} from './test_injector'; | 
					
						
							|  |  |  | export {expect} from './testing'; | 
					
						
							| 
									
										
										
										
											2016-06-23 17:10:22 -07:00
										 |  |  | export * from './logger'; | 
					
						
							|  |  |  | export * from './ng_zone_mock'; | 
					
						
							|  |  |  | export * from './mock_application_ref'; | 
					
						
							| 
									
										
										
										
											2016-05-31 15:15:38 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 15:45:15 -07:00
										 |  |  | export var proxy: ClassDecorator = (t: any /** TODO #9100 */) => t; | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-01 10:28:57 -08:00
										 |  |  | var _global = <any>(typeof window === 'undefined' ? global : window); | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-03 14:45:25 -07:00
										 |  |  | export var afterEach: Function = _global.afterEach; | 
					
						
							| 
									
										
										
										
											2015-05-21 16:30:07 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  | var jsmBeforeEach = _global.beforeEach; | 
					
						
							|  |  |  | var jsmDescribe = _global.describe; | 
					
						
							|  |  |  | var jsmDDescribe = _global.fdescribe; | 
					
						
							|  |  |  | var jsmXDescribe = _global.xdescribe; | 
					
						
							|  |  |  | var jsmIt = _global.it; | 
					
						
							|  |  |  | var jsmIIt = _global.fit; | 
					
						
							|  |  |  | var jsmXIt = _global.xit; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 15:45:15 -07:00
										 |  |  | var runnerStack: any[] /** TODO #9100 */ = []; | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  | var inIt = false; | 
					
						
							| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  | jasmine.DEFAULT_TIMEOUT_INTERVAL = 3000; | 
					
						
							|  |  |  | var globalTimeOut = jasmine.DEFAULT_TIMEOUT_INTERVAL; | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-08 19:03:21 -08:00
										 |  |  | var testInjector = getTestInjector(); | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 16:23:28 -07:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Mechanism to run `beforeEach()` functions of Angular tests. | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2015-10-10 22:11:13 -07:00
										 |  |  |  * Note: Jasmine own `beforeEach` is used by this library to handle DI providers. | 
					
						
							| 
									
										
										
										
											2015-08-28 16:23:28 -07:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  | class BeforeEachRunner { | 
					
						
							| 
									
										
										
										
											2016-04-26 13:06:50 -07:00
										 |  |  |   private _fns: Array<Function> = []; | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 16:23:28 -07:00
										 |  |  |   constructor(private _parent: BeforeEachRunner) {} | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-26 13:06:50 -07:00
										 |  |  |   beforeEach(fn: Function): void { this._fns.push(fn); } | 
					
						
							| 
									
										
										
										
											2015-08-28 16:23:28 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-08 19:03:21 -08:00
										 |  |  |   run(): void { | 
					
						
							|  |  |  |     if (this._parent) this._parent.run(); | 
					
						
							| 
									
										
										
										
											2016-04-26 13:06:50 -07:00
										 |  |  |     this._fns.forEach((fn) => { fn(); }); | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-10 22:11:13 -07:00
										 |  |  | // Reset the test providers before each test
 | 
					
						
							| 
									
										
										
										
											2015-12-08 19:03:21 -08:00
										 |  |  | jsmBeforeEach(() => { testInjector.reset(); }); | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 15:45:15 -07:00
										 |  |  | function _describe(jsmFn: any /** TODO #9100 */, ...args: any[] /** TODO #9100 */) { | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  |   var parentRunner = runnerStack.length === 0 ? null : runnerStack[runnerStack.length - 1]; | 
					
						
							|  |  |  |   var runner = new BeforeEachRunner(parentRunner); | 
					
						
							|  |  |  |   runnerStack.push(runner); | 
					
						
							| 
									
										
										
										
											2015-06-02 09:51:40 -07:00
										 |  |  |   var suite = jsmFn(...args); | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  |   runnerStack.pop(); | 
					
						
							|  |  |  |   return suite; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 15:45:15 -07:00
										 |  |  | export function describe(...args: any[] /** TODO #9100 */): void { | 
					
						
							| 
									
										
										
										
											2015-06-02 09:51:40 -07:00
										 |  |  |   return _describe(jsmDescribe, ...args); | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 15:45:15 -07:00
										 |  |  | export function ddescribe(...args: any[] /** TODO #9100 */): void { | 
					
						
							| 
									
										
										
										
											2015-06-02 09:51:40 -07:00
										 |  |  |   return _describe(jsmDDescribe, ...args); | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 15:45:15 -07:00
										 |  |  | export function xdescribe(...args: any[] /** TODO #9100 */): void { | 
					
						
							| 
									
										
										
										
											2015-06-02 09:51:40 -07:00
										 |  |  |   return _describe(jsmXDescribe, ...args); | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-26 13:06:50 -07:00
										 |  |  | export function beforeEach(fn: Function): void { | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  |   if (runnerStack.length > 0) { | 
					
						
							|  |  |  |     // Inside a describe block, beforeEach() uses a BeforeEachRunner
 | 
					
						
							| 
									
										
										
										
											2015-08-28 16:23:28 -07:00
										 |  |  |     runnerStack[runnerStack.length - 1].beforeEach(fn); | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  |   } else { | 
					
						
							|  |  |  |     // Top level beforeEach() are delegated to jasmine
 | 
					
						
							| 
									
										
										
										
											2016-04-26 13:06:50 -07:00
										 |  |  |     jsmBeforeEach(fn); | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							| 
									
										
										
										
											2015-10-10 22:11:13 -07:00
										 |  |  |  * Allows overriding default providers defined in test_injector.js. | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2015-10-10 22:11:13 -07:00
										 |  |  |  * The given function must return a list of DI providers. | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  |  * | 
					
						
							|  |  |  |  * Example: | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2015-11-11 14:28:23 +01:00
										 |  |  |  *   beforeEachProviders(() => [ | 
					
						
							| 
									
										
										
										
											2016-06-02 17:30:40 -07:00
										 |  |  |  *     {provide: Compiler, useClass: MockCompiler}, | 
					
						
							|  |  |  |  *     {provide: SomeToken, useValue: myValue}, | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  |  *   ]); | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2016-06-08 15:45:15 -07:00
										 |  |  | export function beforeEachProviders(fn: any /** TODO #9100 */): void { | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  |   jsmBeforeEach(() => { | 
					
						
							| 
									
										
										
										
											2015-11-11 14:28:23 +01:00
										 |  |  |     var providers = fn(); | 
					
						
							|  |  |  |     if (!providers) return; | 
					
						
							| 
									
										
										
										
											2015-12-08 19:03:21 -08:00
										 |  |  |     testInjector.addProviders(providers); | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  |   }); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-10 22:11:13 -07:00
										 |  |  | /** | 
					
						
							|  |  |  |  * @deprecated | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2016-06-08 15:45:15 -07:00
										 |  |  | export function beforeEachBindings(fn: any /** TODO #9100 */): void { | 
					
						
							| 
									
										
										
										
											2015-10-10 22:11:13 -07:00
										 |  |  |   beforeEachProviders(fn); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-26 13:06:50 -07:00
										 |  |  | function _it(jsmFn: Function, name: string, testFn: Function, testTimeOut: number): void { | 
					
						
							| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  |   if (runnerStack.length == 0) { | 
					
						
							|  |  |  |     // This left here intentionally, as we should never get here, and it aids debugging.
 | 
					
						
							|  |  |  |     debugger; | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |     throw new Error('Empty Stack!'); | 
					
						
							| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  |   var runner = runnerStack[runnerStack.length - 1]; | 
					
						
							| 
									
										
										
										
											2015-09-09 16:41:11 +02:00
										 |  |  |   var timeOut = Math.max(globalTimeOut, testTimeOut); | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 15:45:15 -07:00
										 |  |  |   jsmFn(name, (done: any /** TODO #9100 */) => { | 
					
						
							| 
									
										
										
										
											2016-06-02 17:30:40 -07:00
										 |  |  |     var completerProvider = { | 
					
						
							|  |  |  |       provide: AsyncTestCompleter, | 
					
						
							| 
									
										
										
										
											2016-04-26 13:06:50 -07:00
										 |  |  |       useFactory: () => { | 
					
						
							|  |  |  |         // Mark the test as async when an AsyncTestCompleter is injected in an it()
 | 
					
						
							|  |  |  |         if (!inIt) throw new Error('AsyncTestCompleter can only be injected in an "it()"'); | 
					
						
							|  |  |  |         return new AsyncTestCompleter(); | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2016-06-02 17:30:40 -07:00
										 |  |  |     }; | 
					
						
							| 
									
										
										
										
											2016-04-26 13:06:50 -07:00
										 |  |  |     testInjector.addProviders([completerProvider]); | 
					
						
							|  |  |  |     runner.run(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     inIt = true; | 
					
						
							|  |  |  |     if (testFn.length == 0) { | 
					
						
							|  |  |  |       let retVal = testFn(); | 
					
						
							|  |  |  |       if (isPromise(retVal)) { | 
					
						
							|  |  |  |         // Asynchronous test function that returns a Promise - wait for completion.
 | 
					
						
							|  |  |  |         (<Promise<any>>retVal).then(done, done.fail); | 
					
						
							|  |  |  |       } else { | 
					
						
							|  |  |  |         // Synchronous test function - complete immediately.
 | 
					
						
							|  |  |  |         done(); | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2015-08-28 16:23:28 -07:00
										 |  |  |     } else { | 
					
						
							| 
									
										
										
										
											2016-04-26 13:06:50 -07:00
										 |  |  |       // Asynchronous test function that takes in 'done' parameter.
 | 
					
						
							|  |  |  |       testFn(done); | 
					
						
							| 
									
										
										
										
											2015-08-28 16:23:28 -07:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-04-26 13:06:50 -07:00
										 |  |  |     inIt = false; | 
					
						
							|  |  |  |   }, timeOut); | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  | export function it( | 
					
						
							|  |  |  |     name: any /** TODO #9100 */, fn: any /** TODO #9100 */, | 
					
						
							|  |  |  |     timeOut: any /** TODO #9100 */ = null): void { | 
					
						
							| 
									
										
										
										
											2015-06-02 16:29:09 +02:00
										 |  |  |   return _it(jsmIt, name, fn, timeOut); | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  | export function xit( | 
					
						
							|  |  |  |     name: any /** TODO #9100 */, fn: any /** TODO #9100 */, | 
					
						
							|  |  |  |     timeOut: any /** TODO #9100 */ = null): void { | 
					
						
							| 
									
										
										
										
											2015-06-02 16:29:09 +02:00
										 |  |  |   return _it(jsmXIt, name, fn, timeOut); | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  | export function iit( | 
					
						
							|  |  |  |     name: any /** TODO #9100 */, fn: any /** TODO #9100 */, | 
					
						
							|  |  |  |     timeOut: any /** TODO #9100 */ = null): void { | 
					
						
							| 
									
										
										
										
											2015-06-02 16:29:09 +02:00
										 |  |  |   return _it(jsmIIt, name, fn, timeOut); | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export interface GuinessCompatibleSpy extends jasmine.Spy { | 
					
						
							|  |  |  |   /** By chaining the spy with and.returnValue, all calls to the function will return a specific | 
					
						
							|  |  |  |    * value. */ | 
					
						
							|  |  |  |   andReturn(val: any): void; | 
					
						
							|  |  |  |   /** By chaining the spy with and.callFake, all calls to the spy will delegate to the supplied | 
					
						
							|  |  |  |    * function. */ | 
					
						
							|  |  |  |   andCallFake(fn: Function): GuinessCompatibleSpy; | 
					
						
							| 
									
										
										
										
											2015-06-24 13:46:39 -07:00
										 |  |  |   /** removes all recorded calls */ | 
					
						
							| 
									
										
										
										
											2016-06-08 15:45:15 -07:00
										 |  |  |   reset(): any /** TODO #9100 */; | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export class SpyObject { | 
					
						
							| 
									
										
										
										
											2016-06-08 15:45:15 -07:00
										 |  |  |   constructor(type: any /** TODO #9100 */ = null) { | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  |     if (type) { | 
					
						
							|  |  |  |       for (var prop in type.prototype) { | 
					
						
							| 
									
										
										
										
											2016-06-08 15:45:15 -07:00
										 |  |  |         var m: any /** TODO #9100 */ = null; | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  |         try { | 
					
						
							|  |  |  |           m = type.prototype[prop]; | 
					
						
							|  |  |  |         } catch (e) { | 
					
						
							|  |  |  |           // As we are creating spys for abstract classes,
 | 
					
						
							|  |  |  |           // these classes might have getters that throw when they are accessed.
 | 
					
						
							|  |  |  |           // As we are only auto creating spys for methods, this
 | 
					
						
							|  |  |  |           // should not matter.
 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         if (typeof m === 'function') { | 
					
						
							| 
									
										
										
										
											2015-06-18 15:40:12 -07:00
										 |  |  |           this.spy(prop); | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2015-09-11 14:51:43 -07:00
										 |  |  |   // Noop so that SpyObject has the same interface as in Dart
 | 
					
						
							| 
									
										
										
										
											2016-06-08 15:45:15 -07:00
										 |  |  |   noSuchMethod(args: any /** TODO #9100 */) {} | 
					
						
							| 
									
										
										
										
											2015-05-26 09:25:16 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 15:45:15 -07:00
										 |  |  |   spy(name: any /** TODO #9100 */) { | 
					
						
							|  |  |  |     if (!(this as any /** TODO #9100 */)[name]) { | 
					
						
							|  |  |  |       (this as any /** TODO #9100 */)[name] = this._createGuinnessCompatibleSpy(name); | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-06-08 15:45:15 -07:00
										 |  |  |     return (this as any /** TODO #9100 */)[name]; | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |   prop(name: any /** TODO #9100 */, value: any /** TODO #9100 */) { | 
					
						
							|  |  |  |     (this as any /** TODO #9100 */)[name] = value; | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2015-08-26 11:41:41 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |   static stub( | 
					
						
							|  |  |  |       object: any /** TODO #9100 */ = null, config: any /** TODO #9100 */ = null, | 
					
						
							|  |  |  |       overrides: any /** TODO #9100 */ = null) { | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  |     if (!(object instanceof SpyObject)) { | 
					
						
							|  |  |  |       overrides = config; | 
					
						
							|  |  |  |       config = object; | 
					
						
							|  |  |  |       object = new SpyObject(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     var m = StringMapWrapper.merge(config, overrides); | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |     StringMapWrapper.forEach(m, (value: any /** TODO #9100 */, key: any /** TODO #9100 */) => { | 
					
						
							|  |  |  |       object.spy(key).andReturn(value); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  |     return object; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-27 09:16:46 -07:00
										 |  |  |   /** @internal */ | 
					
						
							| 
									
										
										
										
											2016-06-08 15:45:15 -07:00
										 |  |  |   _createGuinnessCompatibleSpy(name: any /** TODO #9100 */): GuinessCompatibleSpy { | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  |     var newSpy: GuinessCompatibleSpy = <any>jasmine.createSpy(name); | 
					
						
							|  |  |  |     newSpy.andCallFake = <any>newSpy.and.callFake; | 
					
						
							|  |  |  |     newSpy.andReturn = <any>newSpy.and.returnValue; | 
					
						
							| 
									
										
										
										
											2015-06-24 13:46:39 -07:00
										 |  |  |     newSpy.reset = <any>newSpy.calls.reset; | 
					
						
							| 
									
										
										
										
											2015-09-09 19:00:22 -07:00
										 |  |  |     // revisit return null here (previously needed for rtts_assert).
 | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  |     newSpy.and.returnValue(null); | 
					
						
							|  |  |  |     return newSpy; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } |