'use strict'; import * as helpers from './helpers'; import 'should'; describe('helpers library', () => { /** * @test {delay} */ describe('delay', () => { /** * @test {delay} */ it('should allow to cancel the delay', async () => { let promise = helpers.delay(1000 * 60 * 60 * 24); promise.canceled.should.be.false(); promise.cancel(); promise.canceled.should.be.true(); await promise; }); }); /** * @test {createHandlePromise} */ describe('createHandlePromise', () => { /** * @test {createHandlePromise} */ it('should timeout promise', async () => { for (let i = 0; i < 10; ++i) { let promise = helpers.createHandlePromise().timeout(1, 'test'); await helpers.delay(2); await helpers.delay(2); try { await promise; throw new Error('assert'); } catch (err) { err.name.should.equal('TimeoutError'); } } }); }); /** * @test {helpers#expBackoffDelay} */ describe('expBackoffDelay', () => { /** * @test {helpers#expBackoffDelay} */ it('should return exponential backoff delay with start time = 1', () => { helpers.expBackoffDelay(0, 1, 20).should.equal(0); helpers.expBackoffDelay(1, 1, 20).should.equal(1); helpers.expBackoffDelay(2, 1, 20).should.equal(2); helpers.expBackoffDelay(3, 1, 20).should.equal(4); helpers.expBackoffDelay(4, 1, 20).should.equal(8); helpers.expBackoffDelay(5, 1, 20).should.equal(16); helpers.expBackoffDelay(6, 1, 20).should.equal(20); }); /** * @test {helpers#expBackoffDelay} */ it('should return exponential backoff delay with start time = 5', () => { helpers.expBackoffDelay(0, 5, 45).should.equal(0); helpers.expBackoffDelay(1, 5, 45).should.equal(5); helpers.expBackoffDelay(2, 5, 45).should.equal(10); helpers.expBackoffDelay(3, 5, 45).should.equal(20); helpers.expBackoffDelay(4, 5, 45).should.equal(40); helpers.expBackoffDelay(5, 5, 45).should.equal(45); }); }); });