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