|
@@ -0,0 +1,38 @@
|
|
|
+describe('concat', function()
|
|
|
+ it('returns the first argument if it is the only argument', function()
|
|
|
+ local observable = Rx.Observable.fromRange(1, 3):concat()
|
|
|
+ expect(observable).to.produce(1, 2, 3)
|
|
|
+ end)
|
|
|
+
|
|
|
+ it('waits until one observable completes before producing items from the next', function()
|
|
|
+ local subjectA = Rx.Subject.create()
|
|
|
+ local subjectB = Rx.Subject.create()
|
|
|
+ local onNext, onError, onComplete = observableSpy(Rx.Observable.concat(subjectA, subjectB))
|
|
|
+ subjectA:onNext(1)
|
|
|
+ subjectB:onNext(2)
|
|
|
+ subjectA:onNext(3)
|
|
|
+ subjectA:onComplete()
|
|
|
+ subjectB:onNext(4)
|
|
|
+ subjectB:onNext(5)
|
|
|
+ subjectB:onComplete()
|
|
|
+ expect(onNext).to.equal({{1}, {3}, {4}, {5}})
|
|
|
+ expect(#onError).to.equal(0)
|
|
|
+ expect(#onComplete).to.equal(1)
|
|
|
+ end)
|
|
|
+
|
|
|
+ it('should error if any of the sources error', function()
|
|
|
+ local badObservable = Rx.Observable.create(function(observer) observer:onError('oh no') end)
|
|
|
+ local observable = Rx.Observable.fromValue(1):concat(Rx.Observable.fromValue(2), badObservable)
|
|
|
+ expect(observable.subscribe).to.fail()
|
|
|
+ end)
|
|
|
+
|
|
|
+ it('should complete once the rightmost observable completes', function()
|
|
|
+ local subject = Rx.Subject.create()
|
|
|
+ local onComplete = spy()
|
|
|
+ local observable = Rx.Observable.concat(Rx.Observable.fromRange(1, 5), Rx.Observable.fromRange(1, 5), subject)
|
|
|
+ observable:subscribe(function() end, function() end, onComplete)
|
|
|
+ expect(#onComplete).to.equal(0)
|
|
|
+ subject:onComplete()
|
|
|
+ expect(#onComplete).to.equal(1)
|
|
|
+ end)
|
|
|
+end)
|