@simplito/privmx-webendpoint
Version:
PrivMX Web Endpoint library
57 lines (56 loc) • 2.7 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('Inbox event manager', () => {
let { q, manager } = (0, utils_1.createTestSetup)();
let mockEventsManager = manager.getInboxEventManager(new mockEventAPIs_1.MockInboxEventApi(q));
beforeEach(() => {
let { q: _q, manager } = (0, utils_1.createTestSetup)();
q = _q;
mockEventsManager = manager.getInboxEventManager(new mockEventAPIs_1.MockInboxEventApi(q));
});
it('should add callback for event', async () => {
await mockEventsManager.onInboxEvent({
event: 'inboxUpdated',
callback: () => { }
});
expect(mockEventsManager.listeners.size).toBe(1);
});
it('should function to remove callback from event', async () => {
const removeListener = await mockEventsManager.onInboxEvent({
event: 'inboxUpdated',
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.onInboxEvent({ event: constants_1.MOCK_INBOX_CREATED_EVENT.type, callback: storeEventCb });
await mockEventsManager.onInboxEvent({ event: constants_1.MOCK_INBOX_CREATED_EVENT.type, callback: storeEventCb });
q.dispatchEvent(constants_1.MOCK_INBOX_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 inboxId = "98dsyvb8as7ybd0asydvb0as";
const event = (0, constants_1.MOCK_INBOX_ENTRY_DELETED_EVENT)(inboxId);
await mockEventsManager.onInboxEvent({ event: constants_1.MOCK_INBOX_CREATED_EVENT.type, callback: storeEventCb });
await mockEventsManager.onEntryEvent(inboxId, {
event: event.type,
callback: messageEventCb
});
q.dispatchEvent(constants_1.MOCK_INBOX_CREATED_EVENT);
q.dispatchEvent(event);
//adding task on end of js event loop
await (0, utils_1.waitForNextTick)();
expect(storeEventCb).toHaveBeenCalledTimes(1);
expect(messageEventCb).toHaveBeenCalledTimes(1);
});
});