UNPKG

@simplito/privmx-webendpoint

Version:

PrivMX Web Endpoint library

57 lines (56 loc) 2.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const mockEventAPIs_1 = require("./__mocks__/mockEventAPIs"); const utils_1 = require("./__mocks__/utils"); const constants_1 = require("./__mocks__/constants"); describe('Store event manager', () => { let { q, manager } = (0, utils_1.createTestSetup)(); let mockEventsManager = manager.getStoreEventManager(new mockEventAPIs_1.MockStoreEventApi(q)); beforeEach(() => { let { q: _q, manager } = (0, utils_1.createTestSetup)(); q = _q; mockEventsManager = manager.getStoreEventManager(new mockEventAPIs_1.MockStoreEventApi(q)); }); it('should add callback for event', async () => { await mockEventsManager.onStoreEvent({ event: 'storeStatsChanged', callback: () => { } }); expect(mockEventsManager.listeners.size).toBe(1); }); it('should function to remove callback from event', async () => { const removeListener = await mockEventsManager.onStoreEvent({ event: 'storeStatsChanged', callback: () => { } }); expect(mockEventsManager.listeners.size).toBe(1); await removeListener(); expect(mockEventsManager.listeners.size).toBe(0); }); it('should register multiple callbacks for channel', async () => { const storeEventCb = jest.fn(); await mockEventsManager.onStoreEvent({ event: constants_1.MOCK_STORE_CREATED_EVENT.type, callback: storeEventCb }); await mockEventsManager.onStoreEvent({ event: constants_1.MOCK_STORE_CREATED_EVENT.type, callback: storeEventCb }); q.dispatchEvent(constants_1.MOCK_STORE_CREATED_EVENT); //adding task on end of js event loop await (0, utils_1.waitForNextTick)(); expect(storeEventCb).toHaveBeenCalledTimes(2); }); it('should handle subscription for two channels', async () => { const storeEventCb = jest.fn(); const messageEventCb = jest.fn(); const STORE_ID = '98dsyvs87dybv9a87dyvb98'; const storeEvent = (0, constants_1.MOCK_STORE_FILE_DELETED_EVENT)(STORE_ID); await mockEventsManager.onStoreEvent({ event: constants_1.MOCK_STORE_CREATED_EVENT.type, callback: storeEventCb }); await mockEventsManager.onFileEvent(STORE_ID, { event: storeEvent.type, callback: messageEventCb }); q.dispatchEvent(constants_1.MOCK_STORE_CREATED_EVENT); q.dispatchEvent(storeEvent); //adding task on end of js event loop await (0, utils_1.waitForNextTick)(); expect(storeEventCb).toHaveBeenCalledTimes(1); expect(messageEventCb).toHaveBeenCalledTimes(1); }); });