1.3 KB39 lines
Blame
1/**
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 */
7
8import rejectAfterTimeout from '../rejectAfterTimeout';
9
10describe('rejectAfterTimeout', () => {
11 beforeEach(() => {
12 jest.useFakeTimers();
13 });
14
15 test('instant promise should win', async () => {
16 const instantPromise = Promise.resolve('winner');
17 const result = await rejectAfterTimeout(instantPromise, 5_000, 'too slow?');
18 expect(result).toBe('winner');
19 jest.advanceTimersByTime(5_000);
20 });
21
22 test('fast promise should win', async () => {
23 const fastPromise = new Promise(resolve => setTimeout(() => resolve('winner'), 1_000));
24 const promise = rejectAfterTimeout(fastPromise, 5_000, 'too slow?');
25 jest.advanceTimersByTime(1_000);
26 const result = await promise;
27 expect(result).toBe('winner');
28 jest.advanceTimersByTime(4_000);
29 });
30
31 test('slow promise should lose', () => {
32 const slowPromise = new Promise(resolve => setTimeout(() => resolve('winner'), 5_000));
33 const promise = rejectAfterTimeout(slowPromise, 1_000, 'too slow?');
34 jest.advanceTimersByTime(1_000);
35 expect(promise).rejects.toBe('too slow?');
36 jest.advanceTimersByTime(4_000);
37 });
38});
39