UNPKG

salsify-experiences-sdk

Version:

SDK to be used by commerce websites to implement product experiences.

40 lines (34 loc) 1.16 kB
import Timeout from '../timeout' const callbackMock = jest.fn() describe('timeout', () => { beforeEach(() => { jest.useFakeTimers() }) afterEach(() => { jest.resetAllMocks() jest.useRealTimers() }) test('it should implement exponential backoff up until 5 minutes', async () => { const timeout = new Timeout() timeout.start(callbackMock) jest.advanceTimersByTime(5000) expect(callbackMock).toHaveBeenCalledTimes(1) jest.advanceTimersByTime(20000) expect(callbackMock).toHaveBeenCalledTimes(2) jest.advanceTimersByTime(45000 + 80000 + 125000 + 180000 + 245000) expect(callbackMock).toHaveBeenCalledTimes(7) jest.advanceTimersByTime(300000) expect(callbackMock).toHaveBeenCalledTimes(8) jest.advanceTimersByTime(300000) expect(callbackMock).toHaveBeenCalledTimes(9) }) test('it should clear the timer', async () => { const timeout = new Timeout() timeout.start(callbackMock) jest.advanceTimersByTime(5000) expect(callbackMock).toHaveBeenCalledTimes(1) timeout.clear() jest.advanceTimersByTime(20000) expect(callbackMock).toHaveBeenCalledTimes(1) }) })