@simplito/privmx-webendpoint
Version:
PrivMX Web Endpoint library
49 lines (48 loc) • 2.33 kB
JavaScript
;
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();
});
});