Files
enterprise-addons/web_studio/static/tests/studio_home_menu.test.js
T

175 lines
5.8 KiB
JavaScript

import { describe, expect, test } from "@odoo/hoot";
import { animationFrame } from "@odoo/hoot-mock";
import {
contains,
MockServer,
mockService,
mountWithCleanup,
onRpc,
} from "@web/../tests/web_test_helpers";
import { WebClientEnterprise } from "@web_enterprise/webclient/webclient";
import { MODES } from "@web_studio/studio_service";
import { defineStudioEnvironment } from "./studio_tests_context";
describe.current.tags("desktop");
defineStudioEnvironment();
test("simple rendering", async () => {
await mountWithCleanup(WebClientEnterprise);
await animationFrame();
expect(".o_app").toHaveCount(4);
await contains(".o_web_studio_navbar_item button").click();
expect(".o_app").toHaveCount(5);
expect(".o_app[data-menu-xmlid=app_1] .o_app_icon").toHaveAttribute(
"data-src",
"/web/static/img/default_icon_app.png"
);
expect(".o_app[data-menu-xmlid=app_1] .o_caption").toHaveText("Partners 1");
expect(".o_app[data-menu-xmlid=app_1] .o_web_studio_edit_icon i").toHaveCount(1);
expect(".o_app[data-menu-xmlid=app_2] .o_app_icon").toHaveStyle({
backgroundColor: "rgb(198, 87, 42)",
});
expect(".o_app[data-menu-xmlid=app_2] i.fa.fa-diamond").toHaveStyle({
color: "rgb(255, 255, 255)",
});
expect(".o_app[data-menu-xmlid=app_2] .o_web_studio_edit_icon i").toHaveCount(1);
expect(".o_web_studio_new_app .o_app_icon").toHaveAttribute(
"data-src",
"/web_studio/static/src/img/default_icon_app.png"
);
expect(".o_web_studio_new_app .o_caption").toHaveText("New App");
});
test("Click on a normal App", async () => {
mockService("studio", {
open(...args) {
expect.step("studio:open: " + args);
super.open(...arguments);
},
});
mockService("menu", {
setCurrentMenu(menu) {
expect.step("menu:setCurrentMenu: " + menu.id);
super.setCurrentMenu(...arguments);
},
});
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.verifySteps([
"studio:open: ",
`studio:open: ${MODES.EDITOR},1`,
"menu:setCurrentMenu: 1",
]);
});
test("Click on new App", async () => {
mockService("studio", {
setParams(...args) {
expect.step(args);
super.setParams(...arguments);
},
});
mockService("menu", {
setCurrentMenu(menu) {
expect.step("menu:setCurrentMenu: " + menu.id);
super.setCurrentMenu(...arguments);
},
});
await mountWithCleanup(WebClientEnterprise);
await animationFrame();
await contains(".o_web_studio_navbar_item button").click();
await contains(".o_web_studio_new_app").click();
expect.verifySteps([
[
{
mode: MODES.APP_CREATOR,
},
],
]);
});
test("Click on edit icon button", async () => {
await mountWithCleanup(WebClientEnterprise);
await animationFrame();
await contains(".o_web_studio_navbar_item button").click();
// TODO: Check why hover doesn't work
// expect(".o_app[data-menu-xmlid=app_1] .o_web_studio_edit_icon:visible").toHaveCount(0);
// await contains(".o_app[data-menu-xmlid=app_1]").hover();
// expect(".o_app[data-menu-xmlid=app_1] .o_web_studio_edit_icon:visible").toHaveCount(1);
await contains(".o_app[data-menu-xmlid=app_1] .o_web_studio_edit_icon", {
visible: false,
}).click();
expect(".o_dialog").toHaveCount(1);
expect(".o_dialog header.modal-header").toHaveText("Edit Application Icon");
expect(
".o_dialog .modal-content.o_web_studio_edit_menu_icon_modal .o_web_studio_icon_creator"
).toHaveCount(1);
expect(".o_dialog footer button").toHaveCount(2);
expect(".o_dialog footer .btn-primary").toHaveText("Confirm");
expect(".o_dialog footer .btn-secondary").toHaveText("Cancel");
await contains(".o_dialog footer .btn-secondary").click();
expect(".o_dialog").toHaveCount(0);
await contains(".o_app[data-menu-xmlid=app_1] .o_web_studio_edit_icon", {
visible: false,
}).click();
await contains(".o_dialog footer .btn-primary").click();
expect(".o_dialog").toHaveCount(0);
});
test("edit an icon", async () => {
onRpc("/web_studio/edit_menu_icon", async (request) => {
const { params } = await request.json();
expect.step("edit_menu_icon");
expect(params).toEqual({
context: {
allowed_company_ids: [1],
lang: "en",
tz: "taht",
uid: 7,
},
icon: ["fa fa-leaf", "#00CEB3", "#FFFFFF"],
menu_id: 1,
});
MockServer.current.menus[0].webIcon = params.icon.join(",");
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] .o_web_studio_edit_icon", {
visible: false,
}).click();
await contains(".o_web_studio_upload > a").click();
expect(".o_web_studio_icon .o_app_icon i.fa-leaf").toHaveCount(0);
await contains(".o_web_studio_selector_icon > button").click();
await contains(".o_font_awesome_icon_selector_value.fa.fa-leaf").click();
expect(".o_web_studio_icon .o_app_icon i.fa-leaf").toHaveCount(1);
await contains(".o_dialog footer .btn-primary").click();
expect.verifySteps(["edit_menu_icon"]);
expect(".o_app[data-menu-xmlid=app_1] .o_app_icon i.fa.fa-leaf").toHaveCount(1);
await contains(".o_web_studio_leave").click();
await animationFrame();
expect(".o_app[data-menu-xmlid=app_1] .o_app_icon i.fa.fa-leaf").toHaveCount(1);
});