Odoo18-Base/extra-addons/web_mobile/static/tests/mobile_service.test.js

51 lines
1.8 KiB
JavaScript

import { expect, test } from "@odoo/hoot";
import { getService, mockService, mountWithCleanup } from "@web/../tests/web_test_helpers";
import { WebClient } from "@web/webclient/webclient";
test("test Reader Loop", async () => {
mockService("mobile", {
enableReader: () => expect.step("enableReader"),
stopReader: () => expect.step("stopReader"),
});
const eventName = "test_event";
const listener1 = () => expect.step("listener1");
const listener2 = () => expect.step("listener2");
await mountWithCleanup(WebClient);
const eventBus = await getService("mobile").bus;
// No callback should be call at the initialization
expect.verifySteps([]);
eventBus.trigger(eventName, {});
// No callback should be call if no listener
expect.verifySteps([]);
eventBus.addEventListener(eventName, listener1);
// enableReader should be call at first listener
expect.verifySteps(["enableReader"]);
eventBus.trigger(eventName, {});
// No callback should be call when an event is trigger
expect.verifySteps(["listener1"]);
eventBus.addEventListener(eventName, listener2);
eventBus.trigger(eventName, {});
// No callback should be call if one listener is already present and another one is added
expect.verifySteps(["listener1", "listener2"]);
eventBus.removeEventListener(eventName, listener1);
eventBus.trigger(eventName, {});
// No callback should be call if there is at least one listener and another one is removed
expect.verifySteps(["listener2"]);
eventBus.removeEventListener(eventName, listener2);
// stopReader should be call if there is no listeners anymore
expect.verifySteps(["stopReader"]);
eventBus.trigger(eventName, {});
// No callback should be call if no listener
expect.verifySteps([]);
});