observer.lua 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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 onCompleted', function()
  7. local function onNext() end
  8. local function onError() end
  9. local function onCompleted() end
  10. local observer = Rx.Observer.create(onNext, onError, onCompleted)
  11. expect(observer._onNext).to.equal(onNext)
  12. expect(observer._onError).to.equal(onError)
  13. expect(observer._onCompleted).to.equal(onCompleted)
  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. expect(#spy(observer, '_onNext', run)).to.equal(1)
  24. end)
  25. it('passes all arguments to _onNext', function()
  26. local observer = Rx.Observer.create()
  27. local function run() observer:onNext(1, '2', 3, nil, 5) end
  28. expect(spy(observer, '_onNext', run)).to.equal({{1, '2', 3, nil, 5}})
  29. end)
  30. it('does not call _onNext if stopped is true', function()
  31. local observer = Rx.Observer.create()
  32. observer.stopped = true
  33. local function run() observer:onNext() end
  34. expect(#spy(observer, '_onNext', run)).to.equal(0)
  35. end)
  36. end)
  37. describe('onError', function()
  38. it('calls _onError with the first argument it was passed', function()
  39. local observer = Rx.Observer.create(_, function() end, _)
  40. local function run() observer:onError('sheeit', 1) end
  41. expect(spy(observer, '_onError', run)).to.equal({{'sheeit'}})
  42. end)
  43. it('sets stopped to true', function()
  44. local observer = Rx.Observer.create(_, function() end, _)
  45. observer:onError()
  46. expect(observer.stopped).to.equal(true)
  47. end)
  48. it('does not call _onError if stopped is already true', function()
  49. local observer = Rx.Observer.create(_, function() end, _)
  50. observer.stopped = true
  51. local function run() observer:onError() end
  52. expect(#spy(observer, '_onError', run)).to.equal(0)
  53. end)
  54. it('causes an error by default', function()
  55. local observer = Rx.Observer.create()
  56. expect(observer.onError).to.fail()
  57. end)
  58. end)
  59. describe('onCompleted', function()
  60. it('calls _onCompleted with no arguments', function()
  61. local observer = Rx.Observer.create()
  62. local function run() observer:onCompleted(1, 2, 3) end
  63. expect(spy(observer, '_onCompleted', run)).to.equal({{}})
  64. end)
  65. it('sets stopped to true', function()
  66. local observer = Rx.Observer.create()
  67. observer:onCompleted()
  68. expect(observer.stopped).to.equal(true)
  69. end)
  70. it('does not call _onCompleted if stopped is already true', function()
  71. local observer = Rx.Observer.create()
  72. observer.stopped = true
  73. local function run() observer:onCompleted() end
  74. expect(#spy(observer, '_onCompleted', run)).to.equal(0)
  75. end)
  76. end)
  77. end)