import { expect, test, describe } from "@odoo/hoot";
import { click, queryAllTexts } from "@odoo/hoot-dom";
import { animationFrame } from "@odoo/hoot-mock";
import { mountView } from "@web/../tests/web_test_helpers";
import { defineProjectModels, ProjectTask } from "./project_models";
describe.current.tags("desktop");
defineProjectModels();
test("project.task (kanban): check task state widget", async () => {
await mountView({
resModel: "project.task",
type: "kanban",
arch: `
`,
});
expect(".o-dropdown--menu").toHaveCount(0, {
message: "If the state button has not been pressed yet, no dropdown should be displayed",
});
await click("div[name='state']:first-child button.dropdown-toggle");
await animationFrame();
expect(".o-dropdown--menu").toHaveCount(1, {
message: "Once the button has been pressed the dropdown should appear",
});
await click(".o-dropdown--menu span.text-danger");
await animationFrame();
expect("div[name='state']:first-child button.dropdown-toggle i.fa-times-circle").toBeVisible({
message:
"If the canceled state as been selected, the fa-times-circle icon should be displayed",
});
await click("div[name='state'] i.fa-hourglass-o");
await animationFrame();
expect(".o-dropdown--menu").toHaveCount(0, {
message: "When trying to click on the waiting icon, no dropdown menu should display",
});
});
test("project.task (form): check task state widget", async () => {
ProjectTask._views = {
form: `
`,
};
await mountView({
resModel: "project.task",
resId: 1,
type: "form",
});
await click("button.o_state_button");
await animationFrame();
expect(queryAllTexts(".state_selection_field_menu > .dropdown-item")).toEqual([
"In Progress",
"Changes Requested",
"Approved",
"Cancelled",
"Done",
]);
await click("button.o_state_button");
await mountView({
resModel: "project.task",
resId: 3,
type: "form",
});
await click("button.o_state_button:contains('Waiting')");
await animationFrame();
expect(queryAllTexts(".state_selection_field_menu > .dropdown-item")).toEqual([
"Cancelled",
"Done",
]);
});