RxLua/tests/skipUntil.lua
Junseong Jang f9ff630135 Add an assertion like 'expect(observable).to.produce.error()' to test 'onError'.
Fixed wrong test codes with the assertion.

Changed the behaviors of the following functions caused by argument types, to raise an error in the creation phase.

- Observable.defer
- Observable:buffer
- Observable:elementAt
- Observable:skipLast
- Observable:takeLast
- Observable:window
2019-03-28 03:04:58 +09:00

50 lines
1.8 KiB
Lua

describe('skipUntil', function()
it('produces an error if its parent errors', function()
local trigger = Rx.Observable.of()
local observable = Rx.Observable.of(''):map(function(x) return x() end)
expect(observable).to.produce.error()
expect(observable:skipUntil(trigger)).to.produce.error()
end)
it('fails if the first argument is not an Observable', function()
local observable = Rx.Observable.of(3)
expect(observable:skipUntil(nil)).to.fail()
expect(observable:skipUntil(0)).to.fail()
expect(observable:skipUntil({})).to.fail()
end)
it('produces no values if the specified observable does not produce any values', function()
local trigger = Rx.Observable.create(function() end)
local observable = Rx.Observable.fromTable({2, 3, 4}):skipUntil(trigger)
local onNext, onError, onCompleted = observableSpy(observable)
expect(#onNext).to.equal(0)
expect(#onError).to.equal(0)
expect(#onCompleted).to.equal(0)
end)
it('produces values after the specified observable produces a value', function()
local onNext = spy()
local trigger = Rx.Subject.create()
local subject = Rx.Subject.create()
subject:skipUntil(trigger):subscribe(Rx.Observer.create(onNext))
subject:onNext('a')
subject:onNext('b')
trigger:onNext('a')
subject:onNext('c')
subject:onNext('d')
subject:onCompleted()
expect(onNext).to.equal({{'c'}, {'d'}})
end)
it('produces all values if the specified observable fires immediately', function()
local onNext = spy()
local subject = Rx.Subject.create()
subject:skipUntil(Rx.Observable.of(1)):subscribe(Rx.Observer.create(onNext))
subject:onNext(1)
subject:onNext(2)
subject:onNext(3)
subject:onCompleted()
expect(onNext).to.equal({{1}, {2}, {3}})
end)
end)