Files
odoo_source/addons/web/static/tests/webclient/webclient_tests.js
T
Aaron Bohy b3972b26a1 [REF] web,*: remove legacy service provider
This service was used to redirect legacy service requests to the
wowl service infrastructure. It has been incrementally simplified
with the codebase getting converted. It now only allows to redirect
calls to the effect service, which doesn't seem useful anymore.
This commit thus removes it.

Part of task~3439226

closes odoo/odoo#138120

Related: odoo/enterprise#48654
Signed-off-by: Géry Debongnie <ged@odoo.com>
2023-10-10 07:15:47 +00:00

106 lines
4.3 KiB
JavaScript

/** @odoo-module **/
import { dialogService } from "@web/core/dialog/dialog_service";
import { notificationService } from "@web/core/notifications/notification_service";
import { ormService } from "@web/core/orm_service";
import { popoverService } from "@web/core/popover/popover_service";
import { registry } from "@web/core/registry";
import { uiService } from "@web/core/ui/ui_service";
import { actionService } from "@web/webclient/actions/action_service";
import { hotkeyService } from "@web/core/hotkeys/hotkey_service";
import { menuService } from "@web/webclient/menus/menu_service";
import { WebClient } from "@web/webclient/webclient";
import { clearRegistryWithCleanup, makeTestEnv } from "../helpers/mock_env";
import { fakeTitleService } from "../helpers/mock_services";
import { destroy, getFixture, mount, patchWithCleanup, triggerEvent } from "../helpers/utils";
import { Component, xml } from "@odoo/owl";
const mainComponentRegistry = registry.category("main_components");
const serviceRegistry = registry.category("services");
let baseConfig;
let target;
QUnit.module("WebClient", {
async beforeEach() {
serviceRegistry
.add("orm", ormService)
.add("action", actionService)
.add("dialog", dialogService)
.add("hotkey", hotkeyService)
.add("menu", menuService)
.add("notification", notificationService)
.add("popover", popoverService)
.add("title", fakeTitleService)
.add("ui", uiService);
baseConfig = { activateMockServer: true };
target = getFixture();
},
});
QUnit.test("can be rendered", async (assert) => {
assert.expect(1);
const env = await makeTestEnv(baseConfig);
await mount(WebClient, target, { env });
assert.containsOnce(target, "header > nav.o_main_navbar");
});
QUnit.test("can render a main component", async (assert) => {
assert.expect(1);
class MyComponent extends Component {}
MyComponent.template = xml`<span class="chocolate">MyComponent</span>`;
clearRegistryWithCleanup(mainComponentRegistry);
mainComponentRegistry.add("mycomponent", { Component: MyComponent });
const env = await makeTestEnv(baseConfig);
await mount(WebClient, target, { env });
assert.containsOnce(target, ".chocolate");
});
QUnit.test("control-click propagation stopped on <a href/>", async (assert) => {
assert.expect(8);
patchWithCleanup(WebClient.prototype, {
/** @param {MouseEvent} ev */
onGlobalClick(ev) {
super.onGlobalClick(ev);
if (ev.ctrlKey) {
assert.ok(
ev.defaultPrevented === false,
"the global click should not prevent the default behavior on ctrl-click an <a href/>"
);
// Necessary in order to prevent the test browser to open in new tab on ctrl-click
ev.preventDefault();
}
},
});
class MyComponent extends Component {
/** @param {MouseEvent} ev */
onclick(ev) {
assert.step(ev.ctrlKey ? "ctrl-click" : "click");
// Necessary in order to prevent the test browser to open in new tab on ctrl-click
ev.preventDefault();
}
}
MyComponent.template = xml`<a href="#" class="MyComponent" t-on-click="onclick">Some link</a>`;
let env = await makeTestEnv(baseConfig);
// Mount the component as standalone and control-click the <a href/>
const standaloneComponent = await mount(MyComponent, target, { env });
assert.verifySteps([]);
await triggerEvent(target.querySelector(".MyComponent"), "", "click", { ctrlKey: false });
await triggerEvent(target.querySelector(".MyComponent"), "", "click", { ctrlKey: true });
assert.verifySteps(["click", "ctrl-click"]);
destroy(standaloneComponent);
// Register the component as a main one, mount the webclient and control-click the <a href/>
clearRegistryWithCleanup(mainComponentRegistry);
mainComponentRegistry.add("mycomponent", { Component: MyComponent });
env = await makeTestEnv(baseConfig);
await mount(WebClient, target, { env });
assert.verifySteps([]);
await triggerEvent(target, ".MyComponent", "click", { ctrlKey: false });
await triggerEvent(target, ".MyComponent", "click", { ctrlKey: true });
assert.verifySteps(["click"]);
});