77 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
/**
 | 
						|
 * @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 {ifEnvSupports} from './test-util';
 | 
						|
 | 
						|
function supportJasmineSpec() {
 | 
						|
  return jasmine && (jasmine as any)['Spec'];
 | 
						|
}
 | 
						|
 | 
						|
(supportJasmineSpec as any).message = 'jasmine spec';
 | 
						|
 | 
						|
ifEnvSupports(supportJasmineSpec, () => {
 | 
						|
  beforeEach(() => {
 | 
						|
    // assert that each jasmine run has a task, so that drainMicrotask works properly.
 | 
						|
    expect(Zone.currentTask).toBeTruthy();
 | 
						|
  });
 | 
						|
 | 
						|
  describe('jasmine', () => {
 | 
						|
    let throwOnAsync = false;
 | 
						|
    let beforeEachZone: Zone|null = null;
 | 
						|
    let beforeAllZone: Zone|null = null;
 | 
						|
    let itZone: Zone|null = null;
 | 
						|
    const syncZone = Zone.current;
 | 
						|
    try {
 | 
						|
      Zone.current.scheduleMicroTask('dontallow', (): any => null);
 | 
						|
    } catch (e) {
 | 
						|
      throwOnAsync = true;
 | 
						|
    }
 | 
						|
 | 
						|
    beforeAll(() => beforeAllZone = Zone.current);
 | 
						|
 | 
						|
    beforeEach(() => beforeEachZone = Zone.current);
 | 
						|
 | 
						|
    it('should throw on async in describe', () => {
 | 
						|
      expect(throwOnAsync).toBe(true);
 | 
						|
      expect(syncZone.name).toEqual('syncTestZone for jasmine.describe');
 | 
						|
      itZone = Zone.current;
 | 
						|
    });
 | 
						|
 | 
						|
    it('should cope with pending tests, which have no test body');
 | 
						|
 | 
						|
    afterEach(() => {
 | 
						|
      let zone = Zone.current;
 | 
						|
      expect(zone.name).toEqual('ProxyZone');
 | 
						|
      expect(beforeEachZone !.name).toEqual(zone.name);
 | 
						|
      expect(itZone).toBe(zone);
 | 
						|
    });
 | 
						|
 | 
						|
    afterAll(() => {
 | 
						|
      let zone = Zone.current;
 | 
						|
      expect(zone.name).toEqual('ProxyZone');
 | 
						|
      expect(beforeAllZone !.name).toEqual(zone.name);
 | 
						|
    });
 | 
						|
  });
 | 
						|
 | 
						|
  describe('return promise', () => {
 | 
						|
    let log: string[];
 | 
						|
    beforeEach(() => { log = []; });
 | 
						|
 | 
						|
    it('should wait for promise to resolve', () => {
 | 
						|
      return new Promise((res, _) => {
 | 
						|
        setTimeout(() => {
 | 
						|
          log.push('resolved');
 | 
						|
          res();
 | 
						|
        }, 100);
 | 
						|
      });
 | 
						|
    });
 | 
						|
 | 
						|
    afterEach(() => { expect(log).toEqual(['resolved']); });
 | 
						|
  });
 | 
						|
})();
 |