12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- describe('switch', function()
- it('errors when the source errors', function()
- expect(Rx.Observable.throw():switch()).to.produce.error()
- end)
- it('errors when an Observable produced by the source errors', function()
- local observable = Rx.Observable.create(function(observer)
- observer:onNext(Rx.Observable.throw())
- observer:onCompleted()
- end)
- expect(observable:switch()).to.produce.error()
- end)
- it('produces the values produced by the latest Observable produced by the source', function()
- local a = Rx.Subject.create()
- local b = Rx.Subject.create()
- local c = Rx.Subject.create()
- local onNext, onError, onCompleted = observableSpy(a:switch())
- b:onNext(1)
- a:onNext(b)
- b:onNext(2)
- b:onNext(3)
- c:onNext(7)
- a:onNext(c)
- b:onNext(4)
- c:onNext(8)
- b:onCompleted()
- c:onNext(9)
- c:onCompleted()
- a:onCompleted()
- expect(onNext).to.equal({{2}, {3}, {8}, {9}})
- expect(#onError).to.equal(0)
- expect(#onCompleted).to.equal(1)
- end)
- it('should unsubscribe from inner subscription too', function()
- local unsubscribeA = spy()
- local observableA = Rx.Observable.create(function(observer)
- return Rx.Subscription.create(unsubscribeA)
- end)
- local subject = Rx.Subject.create()
- local subscription = subject:switch():subscribe()
- subject:onNext(observableA)
- subscription:unsubscribe()
- expect(#unsubscribeA).to.equal(1)
- end)
- end)
|