hr_timesheet/static/tests/task_with_hours_tests.js

86 lines
3.5 KiB
JavaScript
Raw Normal View History

/** @odoo-module */
import { makeView } from "@web/../tests/views/helpers";
import { click, clickDropdown, editInput, getFixture } from "@web/../tests/helpers/utils";
import { getServerData, updateArch, setupTestEnv } from "./hr_timesheet_common_tests";
QUnit.module("hr_timesheet", (hooks) => {
let target;
let serverData;
hooks.beforeEach(async function (assert) {
setupTestEnv();
serverData = getServerData();
updateArch(
serverData,
{ task_id: "task_with_hours" },
{ task_id: "{ 'default_project_id': project_id }" });
target = getFixture();
});
QUnit.module("task_with_hours");
async function _testCreateAndEdit(target, visible, assert) {
await click(target, ".o_list_many2one[name=task_id]");
await click(target, ".o_list_many2one[name=task_id] input");
await editInput(target, ".o_list_many2one[name=task_id] input", "NonExistingTask");
await click(target, ".o_list_many2one[name=task_id] input");
await clickDropdown(target, "task_id");
const testFunction = visible ? assert.containsOnce : assert.containsNone;
testFunction(target, '.o_list_many2one[name=task_id] .dropdown ul li:contains(Create "NonExistingTask")');
}
QUnit.test("quick create is enabled when project_id is set", async function (assert) {
await makeView({
serverData,
type: "list",
resModel: "account.analytic.line",
});
const secondRow = target.querySelector(".o_list_table .o_data_row:nth-of-type(2)");
await _testCreateAndEdit(secondRow, true, assert);
});
QUnit.test("quick create is no enabled when project_id is not set", async function (assert) {
await makeView({
serverData,
type: "list",
resModel: "account.analytic.line",
});
const thirdRow = target.querySelector(".o_list_table .o_data_row:nth-of-type(3)");
await _testCreateAndEdit(thirdRow, false, assert);
});
QUnit.test("the text of the task includes hours in the drop down but not in the line", async function (assert) {
await makeView({
serverData,
type: "list",
resModel: "account.analytic.line",
});
const firstRow = target.querySelector(".o_list_table .o_data_row:first-of-type");
assert.containsNone(firstRow, '.o_list_many2one[name=task_id]:contains("AdditionalInfo")');
await click(firstRow, ".o_list_many2one[name=task_id]");
await clickDropdown(firstRow, "task_id");
assert.containsN(firstRow, '.o_list_many2one[name=task_id] .dropdown ul li:contains("AdditionalInfo")', 3);
});
QUnit.test("project task progress bar color", async function (assert) {
await makeView({
serverData,
type: "list",
resModel: "project.task",
arch: `
<tree>
<field name="name"/>
<field name="project_id"/>
<field name="progress" widget="project_task_progressbar" options="{'overflow_class': 'bg-danger'}"/>
</tree>
`,
});
assert.containsOnce(target, "div.o_progressbar .bg-success", "Task 1 having progress = 50 < 80 => green color")
assert.containsOnce(target, "div.o_progressbar .bg-warning", "Task 2 having progress = 80 >= 80 => orange color")
assert.containsOnce(target, "div.o_progressbar .bg-success", "Task 3 having progress = 101 > 100 => red color")
});
});