2015-12-03 09:06:42 -08:00
|
|
|
import {Injectable} from 'angular2/src/core/di';
|
2015-10-08 13:33:22 -07:00
|
|
|
import {NgZone} from 'angular2/src/core/zone/ng_zone';
|
2015-11-20 18:07:54 -08:00
|
|
|
import {EventEmitter, ObservableWrapper} from 'angular2/src/facade/async';
|
2015-05-20 17:19:46 -07:00
|
|
|
|
2015-12-03 15:49:09 -08:00
|
|
|
/**
|
|
|
|
* A mock implementation of {@link NgZone}.
|
|
|
|
*/
|
2015-12-03 09:06:42 -08:00
|
|
|
@Injectable()
|
2015-10-08 13:33:22 -07:00
|
|
|
export class MockNgZone extends NgZone {
|
2015-10-09 17:21:25 -07:00
|
|
|
/** @internal */
|
2016-02-25 14:24:17 -08:00
|
|
|
private _mockOnStable: EventEmitter<any> = new EventEmitter(false);
|
2015-09-08 10:52:06 -07:00
|
|
|
|
2016-02-25 14:24:17 -08:00
|
|
|
constructor() { super({enableLongStackTrace: false}); }
|
2015-11-20 18:07:54 -08:00
|
|
|
|
2016-02-25 14:24:17 -08:00
|
|
|
get onStable() { return this._mockOnStable; }
|
2015-05-20 17:19:46 -07:00
|
|
|
|
2015-07-07 20:03:00 -07:00
|
|
|
run(fn: Function): any { return fn(); }
|
2015-05-20 17:19:46 -07:00
|
|
|
|
2015-07-07 20:03:00 -07:00
|
|
|
runOutsideAngular(fn: Function): any { return fn(); }
|
2015-09-08 10:52:06 -07:00
|
|
|
|
2016-02-25 14:24:17 -08:00
|
|
|
simulateZoneExit(): void { ObservableWrapper.callNext(this.onStable, null); }
|
2015-05-20 17:19:46 -07:00
|
|
|
}
|