60 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.9 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 {asapScheduler, of } from 'rxjs';
 | 
						|
import {map, observeOn} from 'rxjs/operators';
 | 
						|
 | 
						|
import {asyncTest} from '../test-util';
 | 
						|
 | 
						|
describe('Scheduler.asap', () => {
 | 
						|
  let log: any[];
 | 
						|
  let errorCallback: Function;
 | 
						|
  const constructorZone: Zone = Zone.root.fork({name: 'Constructor Zone'});
 | 
						|
 | 
						|
  beforeEach(() => { log = []; });
 | 
						|
 | 
						|
  it('scheduler asap should run in correct zone', asyncTest((done: any) => {
 | 
						|
       let observable: any;
 | 
						|
       constructorZone.run(() => { observable = of (1, 2, 3).pipe(observeOn(asapScheduler)); });
 | 
						|
 | 
						|
       const zone = Zone.current.fork({name: 'subscribeZone'});
 | 
						|
 | 
						|
       zone.run(() => {
 | 
						|
         observable.pipe(map((value: number) => { return value; }))
 | 
						|
             .subscribe(
 | 
						|
                 (value: number) => {
 | 
						|
                   expect(Zone.current.name).toEqual(zone.name);
 | 
						|
                   if (value === 3) {
 | 
						|
                     setTimeout(done);
 | 
						|
                   }
 | 
						|
                 },
 | 
						|
                 (err: any) => { fail('should not be here'); });
 | 
						|
       });
 | 
						|
     }, Zone.root));
 | 
						|
 | 
						|
  it('scheduler asap error should run in correct zone', asyncTest((done: any) => {
 | 
						|
       let observable: any;
 | 
						|
       constructorZone.run(() => { observable = of (1, 2, 3).pipe(observeOn(asapScheduler)); });
 | 
						|
 | 
						|
       Zone.root.run(() => {
 | 
						|
         observable
 | 
						|
             .pipe(map((value: number) => {
 | 
						|
               if (value === 3) {
 | 
						|
                 throw new Error('oops');
 | 
						|
               }
 | 
						|
               return value;
 | 
						|
             }))
 | 
						|
             .subscribe((value: number) => {}, (err: any) => {
 | 
						|
               expect(err.message).toEqual('oops');
 | 
						|
               expect(Zone.current.name).toEqual('<root>');
 | 
						|
               done();
 | 
						|
             });
 | 
						|
       });
 | 
						|
     }, Zone.root));
 | 
						|
});
 |