Files
odoo_source/addons/mail/static/tests/tools/debug_manager_tests.js
T
Aaron Bohy a5091fee99 [REF] *: rework webclient test helpers
This commit splits the 'getActionManagerTestConfig' helper into 2:
'setupWebClientServiceRegistry' and 'getActionManagerServerData'.

The first one is now automatically called by the 'createWebClient'
helper, as it properly setups the service registry with all services
required by the WebClient component.

The second one generates a few data (menus, actions, views...) that
can be used in tests. That helper is mainly useful for action tests
(formerly ActionManager tests) in web. With this refactoring, they
are no longer generated for each test in the whole codebase that
spawns a webclient, as before this commit.

closes odoo-dev/odoo#906

Related: odoo-dev/enterprise#161
Signed-off-by: Géry Debongnie (ged) <ged@openerp.com>
2021-06-18 21:31:30 +02:00

66 lines
2.3 KiB
JavaScript

/** @odoo-module **/
import { manageMessages } from "@mail/js/tools/debug_manager";
import { click, legacyExtraNextTick, patchWithCleanup } from "@web/../tests/helpers/utils";
import { createWebClient, doAction, getActionManagerServerData } from "@web/../tests/webclient/helpers";
import { debugService } from "@web/core/debug/debug_service";
import { registry } from "@web/core/registry";
QUnit.module("DebugMenu");
QUnit.test("Manage Messages", async function (assert) {
assert.expect(6);
patchWithCleanup(odoo, { debug: "1" });
const serverData = getActionManagerServerData();
// Add fake "mail.message" model and arch
serverData.models["mail.message"] = {
fields: { name: { string: "Name", type: "char" } },
records: [],
};
Object.assign(serverData.views, {
"mail.message,false,list": `<tree/>`,
"mail.message,false,form": `<form/>`,
"mail.message,false,search": `<search/>`,
});
// Activate debug service with "Manage Message" item
registry.category("services").add("debug", debugService);
registry.category("debug").category("form").add("manageMessages", manageMessages);
async function mockRPC(route, args) {
if (args.method === "check_access_rights") {
return true;
}
if (route === "/web/dataset/search_read" && args.model === "mail.message") {
assert.strictEqual(args.context.default_res_id, 5);
assert.strictEqual(args.context.default_res_model, "partner");
assert.deepEqual(args.domain, ["&", ["res_id", "=", 5], ["model", "=", "partner"]]);
}
}
const wc = await createWebClient({ serverData, mockRPC });
await doAction(wc, 3, { viewType: "form", resId: 5 });
await legacyExtraNextTick();
await click(wc.el, ".o_debug_manager .o_dropdown_toggler");
const dropdownItems = wc.el.querySelectorAll(
".o_debug_manager .o_dropdown_menu .o_dropdown_item"
);
assert.strictEqual(dropdownItems.length, 1);
assert.strictEqual(
dropdownItems[0].innerText.trim(),
"Manage Messages",
"should have correct menu item text"
);
await click(dropdownItems[0]);
await legacyExtraNextTick();
assert.strictEqual(
wc.el.querySelector(".breadcrumb-item.active").innerText.trim(),
"Manage Messages"
);
});