RxLua/tests/observer.lua
2015-08-29 15:18:49 -07:00

58 lines
1.8 KiB
Lua

describe('Observer', function()
describe('.create', function()
it('returns an Observer', function()
expect(Rx.Observer.create()).to.be.an(Rx.Observer)
end)
it('assigns onNext, onError, and onComplete', function()
local function onNext() end
local function onError() end
local function onComplete() end
local observer = Rx.Observer.create(onNext, onError, onComplete)
expect(observer._onNext).to.equal(onNext)
expect(observer._onError).to.equal(onError)
expect(observer._onComplete).to.equal(onComplete)
end)
it('initializes stopped to false', function()
expect(Rx.Observer.create().stopped).to.equal(false)
end)
end)
describe('.onNext', function()
it('calls _onNext', function()
local observer = Rx.Observer.create()
local function run() observer:onNext() end
local calls = spy(observer, '_onNext', run)
expect(#calls).to.equal(1)
end)
it('passes all arguments to _onNext', function()
local observer = Rx.Observer.create()
local function run() observer:onNext(1, '2', 3, nil, 5) end
local calls = spy(observer, '_onNext', run)
expect(calls).to.equal({{1, '2', 3, nil, 5}})
end)
it('does not call _onNext if onComplete has been called', function()
local observer = Rx.Observer.create()
local function run()
observer:onComplete()
observer:onNext()
end
expect(#spy(observer, '_onNext', run)).to.equal(0)
end)
it('does not call _onNext if onError has been called', function()
local observer = Rx.Observer.create(_, function() end, _)
local function run()
observer:onError()
observer:onNext()
end
expect(#spy(observer, '_onNext', run)).to.equal(0)
end)
end)
end)