import { beforeEach, expect, test } from "@odoo/hoot";
import { queryFirst } from "@odoo/hoot-dom";
import { mockDate } from "@odoo/hoot-mock";
import { mountGanttView } from "./web_gantt_test_helpers";
import { ResUsers, TASKS_STAGE_SELECTION, Tasks, defineGanttModels } from "./gantt_mock_models";
function randomName(length) {
const CHARS = "abcdefghijklmnopqrstuvwxyzàùéèâîûêôäïüëö";
return [...Array(length)]
.map(() => {
const char = CHARS[Math.floor(Math.random() * CHARS.length)];
return Math.random() < 0.5 ? char : char.toUpperCase();
})
.join("");
}
defineGanttModels();
beforeEach(() => mockDate("2018-12-20T08:00:00", +1));
test.tags("manual testing").skip("large amount of records (ungrouped)", async () => {
const NB_TASKS = 10000;
Tasks._records = [...Array(NB_TASKS)].map((_, i) => ({
id: i + 1,
name: `Task ${i + 1}`,
start: `2018-12-01 00:00:00`,
stop: `2018-12-01 23:00:00`,
}));
console.time("makeView");
await mountGanttView({
resModel: "tasks",
arch: ``,
});
console.timeEnd("makeView");
expect(1).toBe(1);
});
test.tags("manual testing").skip("large amount of records (one level grouped)", async () => {
const NB_USERS = 10000;
const NB_TASKS = 10000;
ResUsers._records = [...Array(NB_USERS)].map((_, i) => ({
id: i + 1,
name: `${randomName(Math.floor(Math.random() * 8) + 8)} (${i + 1})`,
}));
Tasks._records = [...Array(NB_TASKS)].map((_, i) => {
let day1 = (i % 30) + 1;
let day2 = (i % 30) + 2;
if (day1 < 10) {
day1 = "0" + day1;
}
if (day2 < 10) {
day2 = "0" + day2;
}
return {
id: i + 1,
name: `Task ${i + 1}`,
user_id: Math.floor(Math.random() * Math.floor(NB_USERS)) + 1,
start: `2018-12-${day1} 00:00:00`,
stop: `2018-12-${day2} 00:00:00`,
};
});
console.time("makeView");
await mountGanttView({
resModel: "tasks",
arch: ``,
groupBy: ["user_id"],
});
console.timeEnd("makeView");
queryFirst(".o_content").style = "max-height: 600px; overflow-y: scroll;";
expect(1).toBe(1);
});
test.tags("manual testing").skip("large amount of records (two level grouped)", async () => {
const NB_USERS = 100;
const NB_TASKS = 10000;
ResUsers._records = [...Array(NB_USERS)].map((_, i) => ({
id: i + 1,
name: `${randomName(Math.floor(Math.random() * 8) + 8)} (${i + 1})`,
}));
Tasks._records = [...Array(NB_TASKS)].map((_, i) => ({
id: i + 1,
name: `Task ${i + 1}`,
stage: TASKS_STAGE_SELECTION[i % 2][0],
user_id: (i % NB_USERS) + 1,
start: "2018-12-01 00:00:00",
stop: "2018-12-02 00:00:00",
}));
console.time("makeView");
await mountGanttView({
resModel: "tasks",
arch: ``,
groupBy: ["user_id", "stage"],
});
console.timeEnd("makeView");
expect(1).toBe(1);
});