@simplito/privmx-webendpoint
Version:
PrivMX Web Endpoint library
74 lines (73 loc) • 2.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const events_1 = require("../events");
const mockEventAPIs_1 = require("./__mocks__/mockEventAPIs");
const utils_1 = require("./__mocks__/utils");
describe('Events Helpers', () => {
let { q, manager } = (0, utils_1.createTestSetup)();
let mockEventsManager = new events_1.ThreadEventsManager(new mockEventAPIs_1.MockThreadEventApi(q));
manager.registerDispatcher(mockEventsManager);
beforeEach(() => {
let { q: _q, manager: _m } = (0, utils_1.createTestSetup)();
q = _q;
manager = _m;
mockEventsManager = new events_1.ThreadEventsManager(new mockEventAPIs_1.MockThreadEventApi(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();
await mockEventsManager.onThreadEvent({ event: 'threadStatsChanged', callback: cb });
q.dispatchEvent({
type: 'threadStatsChanged',
data: {},
channel: 'thread',
connectionId: 1
});
//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();
await mockEventsManager.onThreadEvent({ event: 'threadStatsChanged', callback: cb });
q.dispatchEvent({
type: 'threadStatsChanged',
data: {},
channel: 'thread',
connectionId: 1
});
q.dispatchEvent({
type: 'threadStatsChanged',
data: {},
channel: 'thread',
connectionId: 1
});
//adding task on end of js event loop
await new Promise((resolve) => {
setTimeout(() => {
expect(cb).toHaveBeenCalledTimes(2);
resolve();
}, 0);
});
q.dispatchEvent({
type: 'threadStatsChanged',
data: {},
channel: 'thread',
connectionId: 1
});
//adding task on end of js event loop
await new Promise((resolve) => {
setTimeout(() => {
expect(cb).toHaveBeenCalledTimes(3);
resolve();
}, 0);
});
});
});