From a0b2f1af5a0a9b1820e8d82da69a39e8d6c7dac5 Mon Sep 17 00:00:00 2001 From: Sarun Rattanasiri Date: Sun, 2 Apr 2017 18:44:46 +0700 Subject: [PATCH] test(fromPromise): ensure Observables can be created from other promise implementations --- spec/observables/from-promise-spec.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/spec/observables/from-promise-spec.ts b/spec/observables/from-promise-spec.ts index 49e64c7d940..7fc74fe5339 100644 --- a/spec/observables/from-promise-spec.ts +++ b/spec/observables/from-promise-spec.ts @@ -72,6 +72,26 @@ describe('Observable.fromPromise', () => { }); }); + it('should accept PromiseLike object for interoperability', (done: MochaDone) => { + class CustomPromise implements PromiseLike { + constructor(private promise: PromiseLike) { + } + then(onFulfilled?: ((value: T) => (PromiseLike | T)) | any | any, + onRejected?: ((reason: any) => (PromiseLike | T)) | any | any): PromiseLike { + return new CustomPromise(this.promise.then(onFulfilled, onRejected)); + }; + } + const promise = new CustomPromise(Promise.resolve(42)); + Observable.fromPromise(promise) + .subscribe( + (x: number) => { expect(x).to.equal(42); }, + () => { + done(new Error('should not be called')); + }, () => { + done(); + }); + }); + it('should emit a value from a resolved promise on a separate scheduler', (done: MochaDone) => { const promise = Promise.resolve(42); Observable.fromPromise(promise, Rx.Scheduler.asap)