From 55a4f1fc869e41aca748c63d3018f0448b1606e0 Mon Sep 17 00:00:00 2001 From: pack Date: Sun, 9 Aug 2026 10:37:07 +0000 Subject: first commit --- .../src/delay/always/always.delay.spec.ts | 65 ++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 node_modules/exponential-backoff/src/delay/always/always.delay.spec.ts (limited to 'node_modules/exponential-backoff/src/delay/always/always.delay.spec.ts') diff --git a/node_modules/exponential-backoff/src/delay/always/always.delay.spec.ts b/node_modules/exponential-backoff/src/delay/always/always.delay.spec.ts new file mode 100644 index 0000000..8a08cd8 --- /dev/null +++ b/node_modules/exponential-backoff/src/delay/always/always.delay.spec.ts @@ -0,0 +1,65 @@ +import { AlwaysDelay } from "./always.delay"; +import { IBackOffOptions, getSanitizedOptions } from "../../options"; + +describe(AlwaysDelay.name, () => { + let options: IBackOffOptions; + let delay: AlwaysDelay; + + function initClass() { + delay = new AlwaysDelay(options); + } + + beforeEach(() => { + options = getSanitizedOptions({}); + initClass(); + jest.useFakeTimers(); + }); + + it(`when calling #apply, the delay is equal to the starting delay`, async () => { + const spy = jest.fn(); + delay.apply().then(spy); + jest.runTimersToTime(options.startingDelay); + await Promise.resolve(); + + expect(spy).toHaveBeenCalledTimes(1); + }); + + it(`when the attempt number is 1, when calling #apply, + the delay is equal to the starting delay multiplied by the time multiple`, async () => { + delay.setAttemptNumber(1); + + const spy = jest.fn(); + delay.apply().then(spy); + jest.runTimersToTime(options.startingDelay * options.timeMultiple); + await Promise.resolve(); + + expect(spy).toHaveBeenCalledTimes(1); + }); + + it(`when the attempt number is 2, when calling #apply, + the delay is equal to the starting delay multiplied by the time multiple raised by the attempt number`, async () => { + const attemptNumber = 2; + delay.setAttemptNumber(attemptNumber); + + const spy = jest.fn(); + delay.apply().then(spy); + jest.runTimersToTime( + options.startingDelay * Math.pow(options.timeMultiple, attemptNumber) + ); + await Promise.resolve(); + + expect(spy).toHaveBeenCalledTimes(1); + }); + + it(`when the #maxDelay is less than #startingDelay, when calling #apply, + the delay is equal to the #maxDelay`, async () => { + options.maxDelay = options.startingDelay - 1; + + const spy = jest.fn(); + delay.apply().then(spy); + jest.runTimersToTime(options.maxDelay); + await Promise.resolve(); + + expect(spy).toHaveBeenCalledTimes(1); + }); +}); -- cgit v1.2.3