/** @odoo-module */ import { describe, expect, test } from "@odoo/hoot"; import { queryOne } from "@odoo/hoot-dom"; import { watchListeners } from "@odoo/hoot-mock"; import { EventBus } from "@odoo/owl"; import { mountForTest, parseUrl } from "../local_helpers"; describe(parseUrl(import.meta.url), () => { test("elementFromPoint and elementsFromPoint should be mocked", async () => { await mountForTest(/* xml */ `
Oui
`); expect(".oui").toHaveRect({ x: 10, y: 10, width: 250, height: 250, }); const div = queryOne(".oui"); expect(document.elementFromPoint(11, 11)).toBe(div); expect(document.elementsFromPoint(11, 11)).toEqual([ div, document.body, document.documentElement, ]); expect(document.elementFromPoint(9, 9)).toBe(document.body); expect(document.elementsFromPoint(9, 9)).toEqual([document.body, document.documentElement]); }); test("event listeners are properly removed", async () => { class MyBus extends EventBus { addEventListener(type) { expect.step(`add ${type}`); return super.addEventListener(...arguments); } removeEventListener() { throw new Error("Cannot remove event listeners"); } } const unwatchListeners = watchListeners(); const bus = new MyBus(); const callback = () => expect.step("callback"); expect.verifySteps([]); bus.addEventListener("some-event", callback); bus.trigger("some-event"); expect.verifySteps(["add some-event", "callback"]); unwatchListeners(); bus.trigger("some-event"); expect.verifySteps([]); }); });