54 lines
1.9 KiB
JavaScript
54 lines
1.9 KiB
JavaScript
import { expect, test } from "@odoo/hoot";
|
|
|
|
import { HookEventBus } from "@web_mobile/js/hook_event_bus";
|
|
|
|
test("HookEventBus: Test callback", async () => {
|
|
const eventBus = new HookEventBus({
|
|
onAddListener: () => expect.step("onAddListenerCallback"),
|
|
onRemoveListener: () => expect.step("onRemoveListenerCallback"),
|
|
});
|
|
|
|
const eventName = "test_event";
|
|
const listener1 = () => expect.step("listener1");
|
|
const listener2 = () => expect.step("listener2");
|
|
|
|
// No callback should be call at the initialization
|
|
expect.verifySteps([]);
|
|
|
|
eventBus.trigger(eventName, {});
|
|
// No callback should be call on event
|
|
expect.verifySteps([]);
|
|
|
|
eventBus.addEventListener(eventName, listener1);
|
|
// enableReader should be call when a listener is added
|
|
expect.verifySteps(["onAddListenerCallback"]);
|
|
|
|
eventBus.trigger(eventName, {});
|
|
// No callback should be call when an event is trigger
|
|
expect.verifySteps(["listener1"]);
|
|
|
|
eventBus.addEventListener(eventName, listener2);
|
|
// enableReader should be call when a listener is added
|
|
expect.verifySteps(["onAddListenerCallback"]);
|
|
|
|
eventBus.trigger(eventName, {});
|
|
// No callback should be call when an event is trigger
|
|
expect.verifySteps(["listener1", "listener2"]);
|
|
|
|
eventBus.removeEventListener(eventName, listener1);
|
|
// stopReader should be call when a listeners is removed
|
|
expect.verifySteps(["onRemoveListenerCallback"]);
|
|
|
|
eventBus.trigger(eventName, {});
|
|
// No callback should be call when an event is trigger
|
|
expect.verifySteps(["listener2"]);
|
|
|
|
eventBus.removeEventListener(eventName, listener2);
|
|
// stopReader should be call when a listeners is removed
|
|
expect.verifySteps(["onRemoveListenerCallback"]);
|
|
|
|
eventBus.trigger(eventName, {});
|
|
// No callback should be call when an event is trigger
|
|
expect.verifySteps([]);
|
|
});
|