175 lines
5.8 KiB
JavaScript
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);
|
|
});
|