From 2f7db2ffbee1ab6bffa225c7a6cc94e333587ca1 Mon Sep 17 00:00:00 2001 From: Andre Staltz Date: Mon, 30 Nov 2015 11:32:45 +0200 Subject: [PATCH] test(Subject): add tests for subjects used as Observer Add tests for Subject, BehaviorSubject and ReplaySubject to check whether they can be used as plain observers when given to Observable.subscribe(). Related to issue #825. --- spec/subject-spec.js | 16 ++++++++++++++++ spec/subjects/behavior-subject-spec.js | 17 +++++++++++++++++ spec/subjects/replay-subject-spec.js | 17 +++++++++++++++++ 3 files changed, 50 insertions(+) diff --git a/spec/subject-spec.js b/spec/subject-spec.js index 61bcc58383..de6adbf86b 100644 --- a/spec/subject-spec.js +++ b/spec/subject-spec.js @@ -471,4 +471,20 @@ describe('Subject', function () { expect(output).toEqual([1,2,3,4,5]); expect(outputComplete).toBe(true); }); + + it('should be an Observer which can be given to Observable.subscribe', function (done) { + var source = Observable.of(1, 2, 3, 4, 5); + var subject = new Subject(); + var expected = [1, 2, 3, 4, 5]; + + subject.subscribe( + function (x) { + expect(x).toBe(expected.shift()); + }, + done.fail, + done + ); + + source.subscribe(subject); + }); }); \ No newline at end of file diff --git a/spec/subjects/behavior-subject-spec.js b/spec/subjects/behavior-subject-spec.js index a9b71c67eb..4ba9da772f 100644 --- a/spec/subjects/behavior-subject-spec.js +++ b/spec/subjects/behavior-subject-spec.js @@ -3,6 +3,7 @@ var Rx = require('../../dist/cjs/Rx'); var BehaviorSubject = Rx.BehaviorSubject; var nextTick = Rx.Scheduler.nextTick; +var Observable = Rx.Observable; describe('BehaviorSubject', function () { it('should extend Subject', function (done) { @@ -115,4 +116,20 @@ describe('BehaviorSubject', function () { )).toBe(sourceTemplate); expectObservable(subscriber1).toBe(expected1); }); + + it('should be an Observer which can be given to Observable.subscribe', function (done) { + var source = Observable.of(1, 2, 3, 4, 5); + var subject = new BehaviorSubject(0); + var expected = [0, 1, 2, 3, 4, 5]; + + subject.subscribe( + function (x) { + expect(x).toBe(expected.shift()); + }, + done.fail, + done + ); + + source.subscribe(subject); + }); }); \ No newline at end of file diff --git a/spec/subjects/replay-subject-spec.js b/spec/subjects/replay-subject-spec.js index 8e1ac28ee4..b82e793eb9 100644 --- a/spec/subjects/replay-subject-spec.js +++ b/spec/subjects/replay-subject-spec.js @@ -3,6 +3,7 @@ var Rx = require('../../dist/cjs/Rx'); var ReplaySubject = Rx.ReplaySubject; var nextTick = Rx.Scheduler.nextTick; +var Observable = Rx.Observable; describe('ReplaySubject', function () { it('should extend Subject', function (done) { @@ -206,4 +207,20 @@ describe('ReplaySubject', function () { expectObservable(subscriber1).toBe(expected1); }); }); + + it('should be an Observer which can be given to Observable.subscribe', function (done) { + var source = Observable.of(1, 2, 3, 4, 5); + var subject = new ReplaySubject(3); + var expected = [3, 4, 5]; + + source.subscribe(subject); + + subject.subscribe( + function (x) { + expect(x).toBe(expected.shift()); + }, + done.fail, + done + ); + }); }); \ No newline at end of file