Merge branch 'feat/inda-383-daily-stat' into 'main'
[ProtonMail-WebClient.git] / packages / shared / test / eventManager / eventManager.spec.js
blobea1069e2c359405706b4a5f9036837d74c95f184
1 import createEventManager from '../../lib/eventManager/eventManager';
3 const mockApi = (responses) => {
4     let i = 0;
5     const cb = async () => {
6         const response = responses[i++];
7         if (response instanceof Error) {
8             throw response;
9         }
10         return response;
11     };
12     return jasmine.createSpy('mockApi').and.callFake(cb);
15 /**
16  * TODO: More tests when https://stackoverflow.com/a/50785284 exists
17  */
18 describe('event manager', () => {
19     it('should call more and not finish until it is done', async () => {
20         const api = mockApi([
21             { EventID: '1', More: 1 },
22             { EventID: '2', More: 1 },
23             { EventID: '3', More: 1 },
24             { EventID: '4', More: 1 },
25             { EventID: '5', More: 1 },
26             { EventID: '6', More: 0 },
27             { EventID: '6', More: 0 },
28         ]);
30         const eventManager = createEventManager({
31             eventID: '1',
32             api,
33             interval: 1000,
34         });
35         const onSuccess = jasmine.createSpy();
36         const unsubscribe = eventManager.subscribe(onSuccess);
38         eventManager.start();
40         await eventManager.call();
42         expect(api.calls.all().length).toEqual(6);
43         expect(onSuccess.calls.all().length).toEqual(6);
45         await eventManager.call();
47         expect(api.calls.all().length, 7);
48         expect(onSuccess.calls.all().length, 7);
50         eventManager.stop();
51         unsubscribe();
52     });
53 });