Merge branch 'docs-header-fix' into 'main'
[ProtonMail-WebClient.git] / packages / shared / test / api / queryPages.spec.ts
blob43432ac3b4a6a76f7d9ff21967f6ce374dc34149
1 import queryPages from '../../lib/api/helpers/queryPages';
3 describe('query pages', () => {
4     it('should be able to process multiple pages', async () => {
5         const result = await queryPages(
6             async (n) => {
7                 return {
8                     Value: n,
9                     Total: 5,
10                 };
11             },
12             {
13                 pageSize: 1,
14                 pagesPerChunk: 1,
15                 delayPerChunk: 1,
16             }
17         ).then((pages) => {
18             return pages.map(({ Value }) => Value);
19         });
20         expect(result).toEqual([0, 1, 2, 3, 4]);
21     });
23     it('should return the first page without a total', async () => {
24         const result = await queryPages(
25             async () => {
26                 return {
27                     Value: 0,
28                 } as any;
29             },
30             {
31                 pageSize: 100,
32                 pagesPerChunk: 20,
33                 delayPerChunk: 1,
34             }
35         ).then((pages) => {
36             return pages.map(({ Value }) => Value);
37         });
38         expect(result).toEqual([0]);
39     });
41     it('should return several pages', async () => {
42         const result = await queryPages(
43             async (n) => {
44                 return {
45                     Value: n,
46                     Total: 4,
47                 };
48             },
49             {
50                 pageSize: 2,
51                 pagesPerChunk: 20,
52                 delayPerChunk: 1,
53             }
54         ).then((pages) => {
55             return pages.map(({ Value }) => Value);
56         });
57         expect(result).toEqual([0, 1]);
58     });
59 });