/* @odoo-module */ import { startServer } from "@bus/../tests/helpers/mock_python_environment"; import { getFixture, patchDate } from "@web/../tests/helpers/utils"; import { start } from "@mail/../tests/helpers/test_utils"; let serverData; let target; QUnit.module("Views", (hooks) => { hooks.beforeEach(async () => { const pyEnv = await startServer(); const [resPartnerId1, resPartnerId2, resPartnerId3] = pyEnv["res.partner"].create([ { display_name: "Mario" }, { display_name: "Luigi" }, { display_name: "Yoshi" }, ]); const [resUsersId1, resUsersId2, resUsersId3] = pyEnv["res.users"].create([ { partner_id: resPartnerId1 }, { partner_id: resPartnerId2 }, { partner_id: resPartnerId3 }, ]); const [hrEmployeePublicId1, hrEmployeePublicId2, hrEmployeePublicId3] = pyEnv[ "hr.employee.public" ].create([ { name: "Mario", user_id: resUsersId1, user_partner_id: resPartnerId1 }, { name: "Luigi", user_id: resUsersId2, user_partner_id: resPartnerId2 }, { name: "Yoshi", user_id: resUsersId3, user_partner_id: resPartnerId3 }, ]); pyEnv.mockServer.models.tasks = { fields: { id: { string: "ID", type: "integer" }, display_name: { string: "Name", type: "char" }, start: { string: "Start Date", type: "datetime" }, stop: { string: "Stop Date", type: "datetime" }, employee_id: { string: "Employee", type: "many2one", relation: "hr.employee.public", }, foo: { string: "Foo", type: "char" }, }, records: [ { id: 1, display_name: "Task 1", start: "2018-11-30 18:30:00", stop: "2018-12-31 18:29:59", employee_id: hrEmployeePublicId1, foo: "Foo 1", }, { id: 2, display_name: "Task 2", start: "2018-12-17 11:30:00", stop: "2018-12-22 06:29:59", employee_id: hrEmployeePublicId2, foo: "Foo 2", }, { id: 3, display_name: "Task 3", start: "2018-12-27 06:30:00", stop: "2019-01-03 06:29:59", employee_id: hrEmployeePublicId3, foo: "Foo 1", }, { id: 4, display_name: "Task 4", start: "2018-12-19 18:30:00", stop: "2018-12-20 06:29:59", employee_id: hrEmployeePublicId1, foo: "Foo 3", }, ], }; serverData = { views: { "tasks,false,search": ``, "tasks,false,gantt": '', }, }; patchDate(2018, 11, 20, 8, 0, 0); target = getFixture(); }); QUnit.module("HrGanttView"); QUnit.test("hr gantt view not grouped", async (assert) => { const { openView } = await start({ serverData }); await openView({ res_model: "tasks", views: [[false, "gantt"]], context: { group_by: [] }, }); assert.containsNone(target, ".o-mail-Avatar"); }); QUnit.test("hr gantt view grouped by employee only", async (assert) => { const { openView } = await start({ serverData }); await openView({ res_model: "tasks", views: [[false, "gantt"]], context: { group_by: ["employee_id"] }, }); assert.containsN(target, ".o_gantt_row_title .o-mail-Avatar", 3); }); QUnit.test("hr gantt view grouped by employee > foo", async (assert) => { const { openView } = await start({ serverData }); await openView({ res_model: "tasks", views: [[false, "gantt"]], context: { group_by: ["employee_id", "foo"] }, }); assert.containsN( target, ".o_gantt_row_header.o_gantt_group .o_gantt_row_title .o-mail-Avatar", 3 ); }); QUnit.test("hr gantt view grouped by foo > employee", async (assert) => { const { openView } = await start({ serverData }); await openView({ res_model: "tasks", views: [[false, "gantt"]], context: { group_by: ["foo", "employee_id"] }, }); assert.containsN( target, ".o_gantt_row_header:not(.o_gantt_group) .o_gantt_row_title .o-mail-Avatar", 4 ); }); });