Files
angular-docs-cn/packages/core/test/application_init_spec.ts
T

52 lines
1.8 KiB
TypeScript
Raw Normal View History

2016-08-02 07:38:14 -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
*/
import {APP_INITIALIZER, ApplicationInitStatus} from '../src/application_init';
2016-09-27 17:12:25 -07:00
import {TestBed, async, inject} from '../testing';
2016-08-02 07:38:14 -07:00
export function main() {
describe('ApplicationInitStatus', () => {
2016-08-02 07:38:14 -07:00
describe('no initializers', () => {
it('should return true for `done`',
async(inject([ApplicationInitStatus], (status: ApplicationInitStatus) => {
expect(status.done).toBe(true);
})));
2016-08-02 07:38:14 -07:00
it('should return a promise that resolves immediately for `donePromise`',
async(inject([ApplicationInitStatus], (status: ApplicationInitStatus) => {
2016-08-02 07:38:14 -07:00
status.donePromise.then(() => { expect(status.done).toBe(true); });
})));
});
describe('with async initializers', () => {
let resolve: (result: any) => void;
let promise: Promise<any>;
2016-08-02 07:38:14 -07:00
beforeEach(() => {
promise = new Promise((res) => { resolve = res; });
TestBed.configureTestingModule(
{providers: [{provide: APP_INITIALIZER, multi: true, useValue: () => promise}]});
2016-08-02 07:38:14 -07:00
});
2016-12-30 00:41:21 +07:00
it('should update the status once all async initializers are done',
async(inject([ApplicationInitStatus], (status: ApplicationInitStatus) => {
2016-08-02 07:38:14 -07:00
let completerResolver = false;
setTimeout(() => {
completerResolver = true;
resolve(null);
2016-08-02 07:38:14 -07:00
});
expect(status.done).toBe(false);
status.donePromise.then(() => {
expect(status.done).toBe(true);
expect(completerResolver).toBe(true);
});
})));
});
});
}