skipUntil.lua 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. describe('skipUntil', function()
  2. it('produces an error if its parent errors', function()
  3. local trigger = Rx.Observable.of()
  4. local observable = Rx.Observable.of(''):map(function(x) return x() end)
  5. expect(observable).to.produce.error()
  6. expect(observable:skipUntil(trigger)).to.produce.error()
  7. end)
  8. it('fails if the first argument is not an Observable', function()
  9. local observable = Rx.Observable.of(3)
  10. expect(observable:skipUntil(nil)).to.fail()
  11. expect(observable:skipUntil(0)).to.fail()
  12. expect(observable:skipUntil({})).to.fail()
  13. end)
  14. it('produces no values if the specified observable does not produce any values', function()
  15. local trigger = Rx.Observable.create(function() end)
  16. local observable = Rx.Observable.fromTable({2, 3, 4}):skipUntil(trigger)
  17. local onNext, onError, onCompleted = observableSpy(observable)
  18. expect(#onNext).to.equal(0)
  19. expect(#onError).to.equal(0)
  20. expect(#onCompleted).to.equal(0)
  21. end)
  22. it('produces values after the specified observable produces a value', function()
  23. local onNext = spy()
  24. local trigger = Rx.Subject.create()
  25. local subject = Rx.Subject.create()
  26. subject:skipUntil(trigger):subscribe(Rx.Observer.create(onNext))
  27. subject:onNext('a')
  28. subject:onNext('b')
  29. trigger:onNext('a')
  30. subject:onNext('c')
  31. subject:onNext('d')
  32. subject:onCompleted()
  33. expect(onNext).to.equal({{'c'}, {'d'}})
  34. end)
  35. it('produces all values if the specified observable fires immediately', function()
  36. local onNext = spy()
  37. local subject = Rx.Subject.create()
  38. subject:skipUntil(Rx.Observable.of(1)):subscribe(Rx.Observer.create(onNext))
  39. subject:onNext(1)
  40. subject:onNext(2)
  41. subject:onNext(3)
  42. subject:onCompleted()
  43. expect(onNext).to.equal({{1}, {2}, {3}})
  44. end)
  45. end)