UNPKG

@simplito/privmx-webendpoint

Version:

PrivMX Web Endpoint library

64 lines (63 loc) 3.07 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("Custom event manager", () => { let { q, manager } = (0, utils_1.createTestSetup)(); let customEventsManager = manager.getCustomEventsManager(new mockContainerSubscriber_1.MockContainerSubscriber(q)); beforeEach(() => { let { q: _q, manager: _manager } = (0, utils_1.createTestSetup)(); q = _q; manager = _manager; customEventsManager = _manager.getCustomEventsManager(new mockContainerSubscriber_1.MockContainerSubscriber(q)); }); it("dispatches custom events to registered callbacks", async () => { const subscriber = new mockContainerSubscriber_1.MockContainerSubscriber(q); const buildQuerySpy = jest .spyOn(subscriber, "buildSubscriptionQuery") .mockImplementation(async (channel, selector, selectorId) => { expect(channel).toBe("custom-channel"); expect(selector).toBe(index_1.Types.EventsEventSelectorType.CONTEXT_ID); expect(selectorId).toBe("ctx-1"); return `${channel}|${selectorId}`; }); const managerWithSpy = manager.getCustomEventsManager(subscriber); const callback = jest.fn(); const subscription = (0, subscriptions_1.createEventSubscription)({ channel: "custom-channel", selector: index_1.Types.EventsEventSelectorType.CONTEXT_ID, id: "ctx-1", callbacks: [callback], }); const [subscriptionId] = await managerWithSpy.subscribeFor([subscription]); expect(buildQuerySpy).toHaveBeenCalled(); q.dispatchEvent((0, constants_1.MOCK_CUSTOM_EVENT)(subscriptionId)); await (0, utils_1.waitForNextTick)(); expect(callback).toHaveBeenCalledTimes(1); const eventArg = callback.mock.calls[0][0]; expect(eventArg.data).toEqual({ contextId: "ctx-1", userId: "user-1", payload: new Uint8Array([1, 2, 3]), statusCode: 0, schemaVersion: 5, }); }); it("stops invoking callbacks after unsubscribe", async () => { const callback = jest.fn(); const subscription = (0, subscriptions_1.createEventSubscription)({ channel: "custom-channel", selector: index_1.Types.EventsEventSelectorType.CONTEXT_ID, id: "ctx-1", callbacks: [callback], }); const [subscriptionId] = await customEventsManager.subscribeFor([subscription]); await customEventsManager.unsubscribeFrom([subscriptionId]); q.dispatchEvent((0, constants_1.MOCK_CUSTOM_EVENT)(subscriptionId)); await (0, utils_1.waitForNextTick)(); expect(callback).not.toHaveBeenCalled(); }); });