UNPKG

@simplito/privmx-webendpoint

Version:

PrivMX Web Endpoint library

74 lines (73 loc) 2.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const events_1 = require("../events"); const mockEventAPIs_1 = require("./__mocks__/mockEventAPIs"); const utils_1 = require("./__mocks__/utils"); describe('Events Helpers', () => { let { q, manager } = (0, utils_1.createTestSetup)(); let mockEventsManager = new events_1.ThreadEventsManager(new mockEventAPIs_1.MockThreadEventApi(q)); manager.registerDispatcher(mockEventsManager); beforeEach(() => { let { q: _q, manager: _m } = (0, utils_1.createTestSetup)(); q = _q; manager = _m; mockEventsManager = new events_1.ThreadEventsManager(new mockEventAPIs_1.MockThreadEventApi(q)); manager.registerDispatcher(mockEventsManager); }); it('should registered dispatchers', () => { expect(manager.dispatchers.length).toBe(1); }); it('should call callback for matching event', async () => { const cb = jest.fn(); await mockEventsManager.onThreadEvent({ event: 'threadStatsChanged', callback: cb }); q.dispatchEvent({ type: 'threadStatsChanged', data: {}, channel: 'thread', connectionId: 1 }); //adding task on end of js event loop await new Promise((resolve) => { setTimeout(() => { expect(cb).toHaveBeenCalled(); resolve(); }, 0); }); }); it('should receive multiple events', async () => { const cb = jest.fn(); await mockEventsManager.onThreadEvent({ event: 'threadStatsChanged', callback: cb }); q.dispatchEvent({ type: 'threadStatsChanged', data: {}, channel: 'thread', connectionId: 1 }); q.dispatchEvent({ type: 'threadStatsChanged', data: {}, channel: 'thread', connectionId: 1 }); //adding task on end of js event loop await new Promise((resolve) => { setTimeout(() => { expect(cb).toHaveBeenCalledTimes(2); resolve(); }, 0); }); q.dispatchEvent({ type: 'threadStatsChanged', data: {}, channel: 'thread', connectionId: 1 }); //adding task on end of js event loop await new Promise((resolve) => { setTimeout(() => { expect(cb).toHaveBeenCalledTimes(3); resolve(); }, 0); }); }); });