UNPKG

@simplito/privmx-webendpoint

Version:

PrivMX Web Endpoint library

49 lines (48 loc) 2.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const index_1 = require("../../index"); const constants_1 = require("../__mocks__/constants"); const mockContainerSubscriber_1 = require("../__mocks__/mockContainerSubscriber"); const utils_1 = require("../__mocks__/utils"); const subscriptions_1 = require("../subscriptions"); describe("User event manager", () => { let { q, manager } = (0, utils_1.createTestSetup)(); let userEventsManager; beforeEach(() => { let { q: _q, manager: _manager } = (0, utils_1.createTestSetup)(); q = _q; manager = _manager; userEventsManager = manager.getUserEventsManager(new mockContainerSubscriber_1.MockContainerSubscriber(q)); }); it("dispatches user events to registered callbacks", async () => { const callback = jest.fn(); const subscription = (0, subscriptions_1.createUserEventSubscription)({ type: index_1.Types.ConnectionEventType.USER_ADD, selector: index_1.Types.ConnectionEventSelectorType.CONTEXT_ID, id: "ctx-1", callbacks: [callback], }); const [subscriptionId] = await userEventsManager.subscribeFor([subscription]); q.dispatchEvent((0, constants_1.MOCK_CONNECTION_USER_ADDED_EVENT)(subscriptionId)); await (0, utils_1.waitForNextTick)(); expect(callback).toHaveBeenCalledTimes(1); expect(callback.mock.calls[0][0].data).toEqual({ contextId: "ctx-1", user: { userId: "user-1", pubKey: "pub-1" }, }); }); it("stops invoking callbacks after unsubscribe", async () => { const callback = jest.fn(); const subscription = (0, subscriptions_1.createUserEventSubscription)({ type: index_1.Types.ConnectionEventType.USER_STATUS, selector: index_1.Types.ConnectionEventSelectorType.CONTEXT_ID, id: "ctx-1", callbacks: [callback], }); const [subscriptionId] = await userEventsManager.subscribeFor([subscription]); await userEventsManager.unsubscribeFrom([subscriptionId]); q.dispatchEvent((0, constants_1.MOCK_CONNECTION_USER_STATUS_EVENT)(subscriptionId)); await (0, utils_1.waitForNextTick)(); expect(callback).not.toHaveBeenCalled(); }); });