51 lines
1.8 KiB
JavaScript
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([]);
|
|
});
|