license import { from } from 'rxjs' ; import { asyncTest } from '../test-util' ; describe ( 'Observable.fromPromise' , ( ) => { let log ; let observable1 ; beforeEach ( ( ) => { log = [ ] ; } ) ; it ( 'fromPromise func callback should run in the correct zone' , asyncTest ( ( done ) => { const constructorZone1 = Zone . current . fork ( { name : 'Constructor Zone1' } ) ; const promiseZone1 = Zone . current . fork ( { name : 'Promise Zone1' } ) ; const subscriptionZone = Zone . current . fork ( { name : 'Subscription Zone' } ) ; let res ; let promise = promiseZone1 . run ( ( ) => { return new Promise ( ( resolve , reject ) => { res = resolve ; } ) ; } ) ; observable1 = constructorZone1 . run ( ( ) => { return from ( promise ) ; } ) ; subscriptionZone . run ( ( ) => { observable1 . subscribe ( ( result ) => { expect ( Zone . current . name ) . toEqual ( subscriptionZone . name ) ; log . push ( result ) ; expect ( log ) . toEqual ( [ 1 ] ) ; done ( ) ; } , ( ) => { fail ( 'should not call error' ) ; } , ( ) => { } ) ; } ) ; res ( 1 ) ; expect ( log ) . toEqual ( [ ] ) ; } , Zone . root ) ) ; } ) ;