Skip to content

Commit d251494

Browse files
🧪 Add tests for promiseAny in utils.ts
Co-authored-by: sunnylqm <615282+sunnylqm@users.noreply.github.com>
1 parent 9317f66 commit d251494

1 file changed

Lines changed: 28 additions & 1 deletion

File tree

‎src/__tests__/utils.test.ts‎

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ mock.module('../i18n', () => {
1616
};
1717
});
1818

19-
import { joinUrls } from '../utils';
19+
import { joinUrls, promiseAny } from '../utils';
2020

2121
describe('joinUrls', () => {
2222
test('returns undefined when fileName is not provided', () => {
@@ -46,3 +46,30 @@ describe('joinUrls', () => {
4646
]);
4747
});
4848
});
49+
50+
describe('promiseAny', () => {
51+
test('resolves with the value of the first resolved promise', async () => {
52+
const p1 = new Promise((resolve) => setTimeout(resolve, 50, 'p1'));
53+
const p2 = new Promise((resolve) => setTimeout(resolve, 10, 'p2'));
54+
const p3 = new Promise((resolve) => setTimeout(resolve, 30, 'p3'));
55+
56+
const result = await promiseAny([p1, p2, p3]);
57+
expect(result).toBe('p2');
58+
});
59+
60+
test('resolves with the value of the first resolved promise even if others reject', async () => {
61+
const p1 = new Promise((_, reject) => setTimeout(reject, 10, new Error('error1')));
62+
const p2 = new Promise((resolve) => setTimeout(resolve, 50, 'p2'));
63+
const p3 = new Promise((_, reject) => setTimeout(reject, 20, new Error('error3')));
64+
65+
const result = await promiseAny([p1, p2, p3]);
66+
expect(result).toBe('p2');
67+
});
68+
69+
test('rejects with error_all_promises_rejected when all promises reject', async () => {
70+
const p1 = Promise.reject(new Error('error1'));
71+
const p2 = new Promise((_, reject) => setTimeout(reject, 10, new Error('error2')));
72+
73+
await expect(promiseAny([p1, p2])).rejects.toThrow('error_all_promises_rejected');
74+
});
75+
});

0 commit comments

Comments
 (0)