diff --git a/addons/mail/static/tests/qunit_suite_tests/m2x_avatar_user_tests.js b/addons/mail/static/tests/qunit_suite_tests/m2x_avatar_user_tests.js index a54885c2a7b..7b70a22b6e7 100644 --- a/addons/mail/static/tests/qunit_suite_tests/m2x_avatar_user_tests.js +++ b/addons/mail/static/tests/qunit_suite_tests/m2x_avatar_user_tests.js @@ -2,6 +2,7 @@ import { start, startServer } from "@mail/../tests/helpers/test_utils"; import { click, getFixture, patchWithCleanup, triggerHotkey } from "@web/../tests/helpers/utils"; +import { browser } from "@web/core/browser/browser"; import { registry } from "@web/core/registry"; import { session } from "@web/session"; import { dom, nextTick } from "web.test_utils"; @@ -79,6 +80,12 @@ QUnit.module("mail", {}, function () { QUnit.test("many2many_avatar_user in kanban view", async function (assert) { assert.expect(5); + patchWithCleanup(browser, { + setTimeout: async (fn) => { + await new Promise((r) => setTimeout(r)) + fn(); + }, + }); const pyEnv = await startServer(); const resUsersIds = pyEnv["res.users"].create([ { name: "Mario" }, diff --git a/addons/web/static/src/core/tooltip/tooltip_service.js b/addons/web/static/src/core/tooltip/tooltip_service.js index dea57c09cb5..4e23025f75e 100644 --- a/addons/web/static/src/core/tooltip/tooltip_service.js +++ b/addons/web/static/src/core/tooltip/tooltip_service.js @@ -129,16 +129,19 @@ export const tooltipService = { if (elementsWithTooltips.has(el)) { openTooltip(el, elementsWithTooltips.get(el)); } else if (el.matches("[data-tooltip], [data-tooltip-template]")) { - const { - tooltip, - tooltipInfo, - tooltipDelay, - tooltipTemplate: template, - tooltipPosition: position, - } = el.dataset; - const delay = parseInt(tooltipDelay); - const info = tooltipInfo ? JSON.parse(tooltipInfo) : null; - openTooltip(el, { tooltip, template, delay, info, position }); + const dataset = el.dataset; + const params = { + tooltip: dataset.tooltip, + template: dataset.tooltipTemplate, + position: dataset.tooltipPosition, + }; + if (dataset.tooltipInfo) { + params.info = JSON.parse(dataset.tooltipInfo); + } + if (dataset.tooltipDelay) { + params.delay = parseInt(dataset.tooltipDelay, 10); + } + openTooltip(el, params); } } diff --git a/addons/web/static/tests/core/tooltip/tooltip_service_tests.js b/addons/web/static/tests/core/tooltip/tooltip_service_tests.js index 54ab588edb4..bad319ad41f 100644 --- a/addons/web/static/tests/core/tooltip/tooltip_service_tests.js +++ b/addons/web/static/tests/core/tooltip/tooltip_service_tests.js @@ -343,14 +343,27 @@ QUnit.module("Tooltip service", (hooks) => { assert.containsNone(target, ".o_popover_container .o_popover"); }); - QUnit.test("tooltip with a delay", async (assert) => { + QUnit.test("tooltip with no delay (default delay)", async (assert) => { + assert.expect(1); class MyComponent extends Component {} - MyComponent.template = xml``; + MyComponent.template = xml``; + const mockSetTimeout = (fn, delay) => { + assert.strictEqual(delay, 400); + }; + await makeParent(MyComponent, { mockSetTimeout }); + target.querySelector("button.myBtn").dispatchEvent(new Event("mouseenter")); + await nextTick(); + }); + + QUnit.test("tooltip with a delay", async (assert) => { + assert.expect(1); + class MyComponent extends Component {} + MyComponent.template = xml``; const mockSetTimeout = (fn, delay) => { assert.strictEqual(delay, 2000); }; await makeParent(MyComponent, { mockSetTimeout }); - target.querySelector("button").dispatchEvent(new Event("mouseenter")); + target.querySelector("button.myBtn").dispatchEvent(new Event("mouseenter")); await nextTick(); });