58 lines
1.8 KiB
Lua
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)
|