retry.lua 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. describe('retry', function()
  2. it('produces values normally if no errors occur', function()
  3. expect(Rx.Observable.fromRange(3):retry()).to.produce(1, 2, 3)
  4. end)
  5. local function createBadObservable(errorCount)
  6. local i = 0
  7. return Rx.Observable.create(function(observer)
  8. i = i + 1
  9. observer:onNext()
  10. if i <= errorCount then
  11. observer:onError('error')
  12. else
  13. observer:onCompleted()
  14. end
  15. end)
  16. end
  17. it('does not retry if the count is less than or equal to zero', function()
  18. local onNext, onError, onCompleted
  19. onNext, onError, onCompleted = observableSpy(createBadObservable(1):retry(0))
  20. expect(#onNext).to.equal(1)
  21. expect(#onError).to.equal(1)
  22. expect(#onCompleted).to.equal(0)
  23. onNext, onError, onCompleted = observableSpy(createBadObservable(1):retry(-1))
  24. expect(#onNext).to.equal(1)
  25. expect(#onError).to.equal(1)
  26. expect(#onCompleted).to.equal(0)
  27. end)
  28. it('completes successfully if the number of errors is less than or equal to the number of retries', function()
  29. local onNext, onError, onCompleted
  30. onNext, onError, onCompleted = observableSpy(createBadObservable(1):retry(1))
  31. expect(#onNext).to.equal(2)
  32. expect(#onError).to.equal(0)
  33. expect(#onCompleted).to.equal(1)
  34. onNext, onError, onCompleted = observableSpy(createBadObservable(1):retry(2))
  35. expect(#onNext).to.equal(2)
  36. expect(#onError).to.equal(0)
  37. expect(#onCompleted).to.equal(1)
  38. end)
  39. it('produces an error if the number of errors is greater than the number of retries', function()
  40. local onNext, onError, onCompleted = observableSpy(createBadObservable(3):retry(2))
  41. expect(#onNext).to.equal(3)
  42. expect(#onError).to.equal(1)
  43. expect(#onCompleted).to.equal(0)
  44. end)
  45. end)