177 lines
6.3 KiB
JavaScript
177 lines
6.3 KiB
JavaScript
import { describe, expect, test } from "@odoo/hoot";
|
|
import { edit } from "@odoo/hoot-dom";
|
|
import { animationFrame } from "@odoo/hoot-mock";
|
|
import {
|
|
contains,
|
|
MockServer,
|
|
mountWithCleanup,
|
|
onRpc,
|
|
sortableDrag,
|
|
stepAllNetworkCalls,
|
|
} from "@web/../tests/web_test_helpers";
|
|
import { WebClientEnterprise } from "@web_enterprise/webclient/webclient";
|
|
import { defineStudioEnvironment } from "./studio_tests_context";
|
|
|
|
describe.current.tags("desktop");
|
|
|
|
defineStudioEnvironment();
|
|
|
|
test("edit menu behavior", async () => {
|
|
await mountWithCleanup(WebClientEnterprise);
|
|
await animationFrame();
|
|
|
|
await contains(".o_web_studio_navbar_item button").click();
|
|
await contains(".o_app[data-menu-xmlid=app_1]").click();
|
|
expect(".o-web-studio-appmenu-editor").toHaveCount(0);
|
|
await contains(".o_web_edit_menu").click();
|
|
expect(".o-web-studio-appmenu-editor").toHaveCount(1);
|
|
});
|
|
|
|
test("edit menu dialog rendering", async () => {
|
|
await mountWithCleanup(WebClientEnterprise);
|
|
await animationFrame();
|
|
|
|
await contains(".o_web_studio_navbar_item button").click();
|
|
await contains(".o_app[data-menu-xmlid=app_1]").click();
|
|
await contains(".o_web_edit_menu").click();
|
|
|
|
expect("ul.oe_menu_editor > li").toHaveAttribute("data-item-id", "1");
|
|
expect(
|
|
"ul.oe_menu_editor > li > div button.o-web-studio-interactive-list-edit-item"
|
|
).toHaveCount(1);
|
|
expect(
|
|
"ul.oe_menu_editor > li > div button.o-web-studio-interactive-list-remove-item"
|
|
).toHaveCount(1);
|
|
expect("ul.oe_menu_editor > li > ul > li").toHaveCount(2);
|
|
expect(".js_add_menu").toHaveCount(1);
|
|
expect(".o-web-studio-interactive-list-remove-item.disabled").toHaveCount(1);
|
|
});
|
|
|
|
test("edit menu dialog: create menu", async () => {
|
|
expect.assertions(10);
|
|
|
|
onRpc("/web_studio/create_new_menu", async (request) => {
|
|
const { params } = await request.json();
|
|
expect(params.menu_name).toBe("AA");
|
|
expect(params.model_choice).toBe("new");
|
|
expect(params.model_options).toEqual(["use_sequence", "use_mail", "use_active"]);
|
|
expect(params.parent_menu_id).toBe(1);
|
|
return {};
|
|
});
|
|
|
|
await mountWithCleanup(WebClientEnterprise);
|
|
await animationFrame();
|
|
|
|
await contains(".o_web_studio_navbar_item button").click();
|
|
await contains(".o_app[data-menu-xmlid=app_1]").click();
|
|
await contains(".o_web_edit_menu").click();
|
|
|
|
stepAllNetworkCalls();
|
|
|
|
await contains(".js_add_menu").click();
|
|
expect(".o_web_studio_add_menu_modal input[name='menuName']").toHaveCount(1);
|
|
expect(".o_web_studio_add_menu_modal .o_record_selector").toHaveCount(0);
|
|
|
|
await edit("new_model");
|
|
await contains(".o_web_studio_add_menu_modal .btn-primary").click();
|
|
expect(".o_web_studio_model_configurator input[name='use_partner']").toHaveCount(1);
|
|
|
|
await contains(
|
|
".o_web_studio_model_configurator .o_web_studio_model_configurator_previous"
|
|
).click();
|
|
expect(".o_web_studio_model_configurator").toHaveCount(0);
|
|
|
|
await contains(
|
|
".o_web_studio_add_menu_modal .o_web_studio_menu_creator_model_choice [value='existing']"
|
|
).click();
|
|
expect(".o_web_studio_add_menu_modal .o_record_selector").toHaveCount(1);
|
|
|
|
await contains(".o_web_studio_add_menu_modal input[name='menuName']").click();
|
|
await edit("AA");
|
|
await animationFrame();
|
|
|
|
await contains(
|
|
".o_web_studio_add_menu_modal .o_web_studio_menu_creator_model_choice [value='new']"
|
|
).click();
|
|
await contains(".o_web_studio_add_menu_modal .btn-primary").click();
|
|
await contains(".o_web_studio_model_configurator .btn-primary").click();
|
|
|
|
expect.verifySteps(["/web_studio/create_new_menu", "/web/webclient/load_menus"]);
|
|
});
|
|
|
|
test("drag/drop to reorganize menus", async () => {
|
|
expect.assertions(3);
|
|
|
|
onRpc("ir.ui.menu", "customize", ({ kwargs }) => {
|
|
expect(kwargs.to_delete).toEqual([]);
|
|
expect(kwargs.to_move).toEqual({
|
|
11: {
|
|
sequence: 2,
|
|
},
|
|
12: {
|
|
parent_menu_id: 1,
|
|
sequence: 1,
|
|
},
|
|
});
|
|
|
|
return true;
|
|
});
|
|
|
|
await mountWithCleanup(WebClientEnterprise);
|
|
await animationFrame();
|
|
|
|
await contains(".o_web_studio_navbar_item button").click();
|
|
await contains(".o_app[data-menu-xmlid=app_1]").click();
|
|
await contains(".o_web_edit_menu").click();
|
|
|
|
stepAllNetworkCalls();
|
|
|
|
const { moveAbove, drop } = await sortableDrag("li[data-item-id='12'] .o-draggable-handle");
|
|
await moveAbove("li[data-item-id='11'] .o-draggable-handle");
|
|
await drop();
|
|
await animationFrame();
|
|
await contains(".o-web-studio-appmenu-editor footer .btn-primary").click();
|
|
expect.verifySteps(["customize", "/web/webclient/load_menus"]);
|
|
});
|
|
|
|
test("edit/delete menus", async () => {
|
|
expect.assertions(12);
|
|
|
|
onRpc("ir.ui.menu", "customize", ({ kwargs }) => {
|
|
expect(kwargs.to_delete).toEqual([12]);
|
|
return true;
|
|
});
|
|
|
|
onRpc("ir.ui.menu", "web_save", ({ args }) => {
|
|
expect(args[0]).toEqual([1]);
|
|
expect(args[1]).toEqual({ name: "New Partner Menu 1" });
|
|
const { menus } = MockServer.current;
|
|
menus.find((m) => m.id === args[0][0]).name = args[1].name;
|
|
});
|
|
|
|
await mountWithCleanup(WebClientEnterprise);
|
|
await animationFrame();
|
|
|
|
await contains(".o_web_studio_navbar_item button").click();
|
|
await contains(".o_app[data-menu-xmlid=app_1]").click();
|
|
await contains(".o_web_edit_menu").click();
|
|
expect(".o-web-studio-interactive-list-item-label").toHaveCount(3);
|
|
|
|
stepAllNetworkCalls();
|
|
await contains(".o-web-studio-interactive-list-edit-item").click();
|
|
expect(".o_dialog").toHaveCount(2);
|
|
expect(".o_dialog .o_form_view").toHaveCount(1);
|
|
expect.verifySteps(["get_views", "web_read"]);
|
|
|
|
await edit("New Partner Menu 1");
|
|
await contains(".o_form_button_save").click();
|
|
expect(".o_dialog").toHaveCount(1);
|
|
expect(".o-web-studio-interactive-list-item-label:eq(0)").toHaveText("New Partner Menu 1");
|
|
expect.verifySteps(["web_save", "/web/webclient/load_menus"]);
|
|
|
|
await contains(".o-web-studio-interactive-list-remove-item:eq(2)").click();
|
|
expect(".o-web-studio-interactive-list-item-label").toHaveCount(2);
|
|
await contains(".modal footer .btn-primary").click();
|
|
expect.verifySteps(["customize", "/web/webclient/load_menus"]);
|
|
});
|