UNPKG

@simplito/privmx-webendpoint

Version:

PrivMX Web Endpoint library

85 lines (84 loc) 3.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const utils_1 = require("../__mocks__/utils"); const managers_1 = require("../managers"); const subscriptions_1 = require("../subscriptions"); const Types_1 = require("../../Types"); const mockContainerSubscriber_1 = require("../__mocks__/mockContainerSubscriber"); const constants_1 = require("../__mocks__/constants"); describe("Events Helpers", () => { let { q, manager } = (0, utils_1.createTestSetup)(); let mockEventsManager = new managers_1.ThreadEventsManager(new mockContainerSubscriber_1.MockContainerSubscriber(q)); manager.registerDispatcher(mockEventsManager); beforeEach(() => { let { q: _q, manager: _m } = (0, utils_1.createTestSetup)(); q = _q; manager = _m; mockEventsManager = new managers_1.ThreadEventsManager(new mockContainerSubscriber_1.MockContainerSubscriber(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(); const sub = (0, subscriptions_1.createThreadSubscription)({ type: Types_1.ThreadEventType.THREAD_STATS, selector: Types_1.ThreadEventSelectorType.CONTEXT_ID, id: "", callbacks: [cb], }); const [subId] = await mockEventsManager.subscribeFor([sub]); q.dispatchEvent({ ...(0, constants_1.createBaseEvent)(subId), type: "threadStatsChanged", channel: "thread", }); //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(); const sub = (0, subscriptions_1.createThreadSubscription)({ type: Types_1.ThreadEventType.THREAD_STATS, selector: Types_1.ThreadEventSelectorType.CONTEXT_ID, id: "", callbacks: [cb], }); const [subId] = await mockEventsManager.subscribeFor([sub]); q.dispatchEvent({ ...(0, constants_1.createBaseEvent)(subId), type: "threadStatsChanged", channel: "thread", }); q.dispatchEvent({ ...(0, constants_1.createBaseEvent)(subId), type: "threadStatsChanged", channel: "thread", }); //adding task on end of js event loop await new Promise((resolve) => { setTimeout(() => { expect(cb).toHaveBeenCalledTimes(2); resolve(); }, 0); }); q.dispatchEvent({ ...(0, constants_1.createBaseEvent)(subId), type: "threadStatsChanged", channel: "thread", }); //adding task on end of js event loop await new Promise((resolve) => { setTimeout(() => { expect(cb).toHaveBeenCalledTimes(3); resolve(); }, 0); }); }); });