@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
JavaScript
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();
});
});