observer.lua 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. describe('Observer', function()
  2. describe('.create', function()
  3. it('returns an Observer', function()
  4. expect(Rx.Observer.create()).to.be.an(Rx.Observer)
  5. end)
  6. it('assigns onNext, onError, and onComplete', function()
  7. local function onNext() end
  8. local function onError() end
  9. local function onComplete() end
  10. local observer = Rx.Observer.create(onNext, onError, onComplete)
  11. expect(observer._onNext).to.equal(onNext)
  12. expect(observer._onError).to.equal(onError)
  13. expect(observer._onComplete).to.equal(onComplete)
  14. end)
  15. it('initializes stopped to false', function()
  16. expect(Rx.Observer.create().stopped).to.equal(false)
  17. end)
  18. end)
  19. describe('.onNext', function()
  20. it('calls _onNext', function()
  21. local observer = Rx.Observer.create()
  22. local function run() observer:onNext() end
  23. local calls = spy(observer, '_onNext', run)
  24. expect(#calls).to.equal(1)
  25. end)
  26. it('passes all arguments to _onNext', function()
  27. local observer = Rx.Observer.create()
  28. local function run() observer:onNext(1, '2', 3, nil, 5) end
  29. local calls = spy(observer, '_onNext', run)
  30. expect(calls).to.equal({{1, '2', 3, nil, 5}})
  31. end)
  32. it('does not call _onNext if onComplete has been called', function()
  33. local observer = Rx.Observer.create()
  34. local function run()
  35. observer:onComplete()
  36. observer:onNext()
  37. end
  38. expect(#spy(observer, '_onNext', run)).to.equal(0)
  39. end)
  40. it('does not call _onNext if onError has been called', function()
  41. local observer = Rx.Observer.create(_, function() end, _)
  42. local function run()
  43. observer:onError()
  44. observer:onNext()
  45. end
  46. expect(#spy(observer, '_onNext', run)).to.equal(0)
  47. end)
  48. end)
  49. end)