@simplito/privmx-webendpoint
Version:
PrivMX Web Endpoint library
57 lines (56 loc) • 2.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const mockEventAPIs_1 = require("./__mocks__/mockEventAPIs");
const utils_1 = require("./__mocks__/utils");
const constants_1 = require("./__mocks__/constants");
describe('Store event manager', () => {
let { q, manager } = (0, utils_1.createTestSetup)();
let mockEventsManager = manager.getStoreEventManager(new mockEventAPIs_1.MockStoreEventApi(q));
beforeEach(() => {
let { q: _q, manager } = (0, utils_1.createTestSetup)();
q = _q;
mockEventsManager = manager.getStoreEventManager(new mockEventAPIs_1.MockStoreEventApi(q));
});
it('should add callback for event', async () => {
await mockEventsManager.onStoreEvent({
event: 'storeStatsChanged',
callback: () => { }
});
expect(mockEventsManager.listeners.size).toBe(1);
});
it('should function to remove callback from event', async () => {
const removeListener = await mockEventsManager.onStoreEvent({
event: 'storeStatsChanged',
callback: () => { }
});
expect(mockEventsManager.listeners.size).toBe(1);
await removeListener();
expect(mockEventsManager.listeners.size).toBe(0);
});
it('should register multiple callbacks for channel', async () => {
const storeEventCb = jest.fn();
await mockEventsManager.onStoreEvent({ event: constants_1.MOCK_STORE_CREATED_EVENT.type, callback: storeEventCb });
await mockEventsManager.onStoreEvent({ event: constants_1.MOCK_STORE_CREATED_EVENT.type, callback: storeEventCb });
q.dispatchEvent(constants_1.MOCK_STORE_CREATED_EVENT);
//adding task on end of js event loop
await (0, utils_1.waitForNextTick)();
expect(storeEventCb).toHaveBeenCalledTimes(2);
});
it('should handle subscription for two channels', async () => {
const storeEventCb = jest.fn();
const messageEventCb = jest.fn();
const STORE_ID = '98dsyvs87dybv9a87dyvb98';
const storeEvent = (0, constants_1.MOCK_STORE_FILE_DELETED_EVENT)(STORE_ID);
await mockEventsManager.onStoreEvent({ event: constants_1.MOCK_STORE_CREATED_EVENT.type, callback: storeEventCb });
await mockEventsManager.onFileEvent(STORE_ID, {
event: storeEvent.type,
callback: messageEventCb
});
q.dispatchEvent(constants_1.MOCK_STORE_CREATED_EVENT);
q.dispatchEvent(storeEvent);
//adding task on end of js event loop
await (0, utils_1.waitForNextTick)();
expect(storeEventCb).toHaveBeenCalledTimes(1);
expect(messageEventCb).toHaveBeenCalledTimes(1);
});
});