RxLua/tests/retry.lua

52 lines
1.7 KiB
Lua

describe('retry', function()
it('produces values normally if no errors occur', function()
expect(Rx.Observable.fromRange(3):retry()).to.produce(1, 2, 3)
end)
local function createBadObservable(errorCount)
local i = 0
return Rx.Observable.create(function(observer)
i = i + 1
observer:onNext()
if i <= errorCount then
observer:onError('error')
else
observer:onCompleted()
end
end)
end
it('does not retry if the count is less than or equal to zero', function()
local onNext, onError, onCompleted
onNext, onError, onCompleted = observableSpy(createBadObservable(1):retry(0))
expect(#onNext).to.equal(1)
expect(#onError).to.equal(1)
expect(#onCompleted).to.equal(0)
onNext, onError, onCompleted = observableSpy(createBadObservable(1):retry(-1))
expect(#onNext).to.equal(1)
expect(#onError).to.equal(1)
expect(#onCompleted).to.equal(0)
end)
it('completes successfully if the number of errors is less than or equal to the number of retries', function()
local onNext, onError, onCompleted
onNext, onError, onCompleted = observableSpy(createBadObservable(1):retry(1))
expect(#onNext).to.equal(2)
expect(#onError).to.equal(0)
expect(#onCompleted).to.equal(1)
onNext, onError, onCompleted = observableSpy(createBadObservable(1):retry(2))
expect(#onNext).to.equal(2)
expect(#onError).to.equal(0)
expect(#onCompleted).to.equal(1)
end)
it('produces an error if the number of errors is greater than the number of retries', function()
local onNext, onError, onCompleted = observableSpy(createBadObservable(3):retry(2))
expect(#onNext).to.equal(3)
expect(#onError).to.equal(1)
expect(#onCompleted).to.equal(0)
end)
end)