UNPKG

@exadel/esl

Version:

Exadel Smart Library (ESL) is the lightweight custom elements library that provide a set of super-flexible components

28 lines (27 loc) 1.03 kB
import { tryUntil } from '../../promise/try-until'; describe('async/promise/try-until', () => { beforeAll(() => jest.useFakeTimers()); afterAll(() => jest.useRealTimers()); test.each([ [() => undefined], [() => { throw new Error(); }] ])('successful ( %s )', (testFn) => { const observedFn = jest.fn(testFn); const successFn = jest.fn(); const promise$ = tryUntil(observedFn, 3, 100); promise$.then(successFn); expect(observedFn).toBeCalled(); expect(successFn).not.toBeCalled(); jest.advanceTimersByTime(110); expect(observedFn).toBeCalledTimes(2); expect(successFn).not.toBeCalled(); observedFn.mockReturnValue(true); jest.advanceTimersByTime(110); return expect(promise$).resolves.toBe(true); }); test('failed (() => false)', () => { const promise$ = tryUntil(() => false, 3, 100); jest.advanceTimersByTime(500); return expect(promise$).rejects.toBeTruthy(); }); });