Files
enterprise-addons/web_enterprise/static/tests/mobile/burger_menu.test.js
T

108 lines
3.3 KiB
JavaScript

import { beforeEach, describe, expect, test } from "@odoo/hoot";
import { click, queryAll } from "@odoo/hoot-dom";
import { animationFrame, runAllTimers } from "@odoo/hoot-mock";
import { defineActions, defineMenus, mountWithCleanup } from "@web/../tests/web_test_helpers";
import { Component, onMounted, xml } from "@odoo/owl";
import { registry } from "@web/core/registry";
import { WebClientEnterprise } from "@web_enterprise/webclient/webclient";
const actionRegistry = registry.category("actions");
const queryAllRoot = (selector) => queryAll(selector, { root: document.body });
class TestClientAction extends Component {
static template = xml`
<div class="test_client_action">
ClientAction_<t t-esc="props.action.params?.description"/>
</div>`;
static props = ["*"];
setup() {
onMounted(() => this.env.config.setDisplayName(`Client action ${this.props.action.id}`));
}
}
describe.current.tags("mobile");
beforeEach(() => {
defineMenus([
{
id: 1,
name: "App1",
appID: 1,
actionID: 1001,
xmlid: "menu_1",
},
]);
});
test("Burger Menu on home menu", async () => {
expect.assertions(5);
await mountWithCleanup(WebClientEnterprise);
await animationFrame();
expect(queryAllRoot(".o_burger_menu")).toHaveCount(0);
expect(queryAllRoot(".o_home_menu")).toBeVisible();
await click(queryAllRoot(".o_mobile_menu_toggle"));
await runAllTimers();
await animationFrame();
expect(queryAllRoot(".o_burger_menu")).toHaveCount(1);
expect(queryAllRoot(".o_user_menu_mobile")).toHaveCount(1);
await click(queryAllRoot(".o_sidebar_close"));
await animationFrame();
expect(".o_burger_menu").toHaveCount(0);
});
test("Burger Menu on home menu over an App", async () => {
expect.assertions(5);
actionRegistry.add("__test__client__action__", TestClientAction);
defineMenus([
{
id: 1,
children: [
{
id: 99,
name: "SubMenu",
appID: 1,
actionID: 1002,
webIconData: undefined,
webIcon: false,
},
],
},
]);
defineActions([
{
id: 1001,
tag: "__test__client__action__",
target: "main",
type: "ir.actions.client",
params: { description: "Id 1" },
},
]);
await mountWithCleanup(WebClientEnterprise);
await animationFrame();
await click(queryAllRoot(".o_draggable:first-of-type .o_app"));
await animationFrame();
await click(queryAllRoot(".o_menu_toggle"));
await animationFrame();
await click(queryAllRoot(".o_sidebar_topbar a.btn-primary"));
await animationFrame();
expect(queryAllRoot(".o_burger_menu")).toHaveCount(0);
expect(queryAllRoot(".o_home_menu")).toBeVisible();
await click(queryAllRoot(".o_mobile_menu_toggle"));
await animationFrame();
expect(queryAllRoot(".o_burger_menu")).toHaveCount(1);
expect(queryAllRoot(".o_burger_menu nav.o_burger_menu_content li")).toHaveCount(0);
expect(queryAllRoot(".o_burger_menu_content")).not.toHaveClass("o_burger_menu_dark");
});