| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import { batchProcessPromiseAll } from './promise';
- describe('batchProcessPromiseAll', () => {
- it('processes items in batch', async() => {
- const batch1 = [1, 2, 3, 4, 5];
- const batch2 = [6, 7, 8, 9, 10];
- const batch3 = [11, 12];
- const all = [...batch1, ...batch2, ...batch3];
- const actualProcessedBatches: number[][] = [];
- const result = await batchProcessPromiseAll(all, 5, async(num, i, arr) => {
- if (arr != null && i === 0) {
- actualProcessedBatches.push(arr);
- }
- return num * 10;
- });
- const expected = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120];
- expect(result).toStrictEqual(expected);
- expect(actualProcessedBatches).toStrictEqual([
- batch1,
- batch2,
- batch3,
- ]);
- });
- describe('error handling', () => {
- const all = [1, 2, 3, 4, 5, 6, 7, 8, '9', 10];
- const multiplyBy10 = async(num) => {
- if (typeof num !== 'number') {
- throw new Error('Is not number');
- }
- return num * 10;
- };
- describe('when throwIfRejected is true', () => {
- it('throws error when there is a Promise rejection', async() => {
- await expect(batchProcessPromiseAll(all, 5, multiplyBy10)).rejects.toThrow('Is not number');
- });
- });
- describe('when throwIfRejected is false', () => {
- it('doesn\'t throw error when there is a Promise rejection', async() => {
- const expected = [10, 20, 30, 40, 50, 60, 70, 80, 100];
- await expect(batchProcessPromiseAll(all, 5, multiplyBy10, false)).resolves.toStrictEqual(expected);
- });
- });
- });
- });
|