130 lines
5.2 KiB
JavaScript
130 lines
5.2 KiB
JavaScript
import { start, startServer } from "@mail/../tests/mail_test_helpers";
|
|
import { assertSteps, click, contains, step } from "@mail/../tests/mail_test_helpers_contains";
|
|
import { beforeEach, describe, expect, test } from "@odoo/hoot";
|
|
import { mockDate } from "@odoo/hoot-mock";
|
|
import { defineTestMailModels } from "@test_mail/../tests/test_mail_test_helpers";
|
|
import { serializeDate, today } from "@web/core/l10n/dates";
|
|
import { user } from "@web/core/user";
|
|
import { patchWithCleanup } from "@web/../tests/web_test_helpers";
|
|
|
|
describe.current.tags("desktop");
|
|
defineTestMailModels();
|
|
// Avoid problem around midnight (Ex.: tomorrow activities become today activities when reaching midnight)
|
|
beforeEach(() => mockDate("2023-4-8 10:00:00", 0));
|
|
|
|
test("menu with no records", async () => {
|
|
await start();
|
|
await click(".o_menu_systray .dropdown-toggle:has(i[aria-label='Activities'])");
|
|
await contains(".o-mail-ActivityMenu", {
|
|
text: "Congratulations, you're done with your activities.",
|
|
});
|
|
});
|
|
|
|
test("do not show empty text when at least some future activities", async () => {
|
|
const tomorrow = today().plus({ days: 1 });
|
|
const pyEnv = await startServer();
|
|
const activityId = pyEnv["mail.test.activity"].create({});
|
|
pyEnv["mail.activity"].create([
|
|
{
|
|
date_deadline: serializeDate(tomorrow),
|
|
res_id: activityId,
|
|
res_model: "mail.test.activity",
|
|
},
|
|
]);
|
|
await start();
|
|
await click(".o_menu_systray .dropdown-toggle:has(i[aria-label='Activities'])");
|
|
await contains(".o-mail-ActivityMenu", {
|
|
count: 0,
|
|
text: "Congratulations, you're done with your activities.",
|
|
});
|
|
});
|
|
|
|
test("activity menu widget: activity menu with 2 models", async () => {
|
|
const tomorrow = today().plus({ days: 1 });
|
|
const yesterday = today().plus({ days: -1 });
|
|
const pyEnv = await startServer();
|
|
const partnerId = pyEnv["res.partner"].create({});
|
|
const activityIds = pyEnv["mail.test.activity"].create([{}, {}, {}, {}]);
|
|
pyEnv["mail.activity"].create([
|
|
{ res_id: partnerId, res_model: "res.partner", date_deadline: serializeDate(today()) },
|
|
{
|
|
res_id: activityIds[0],
|
|
res_model: "mail.test.activity",
|
|
date_deadline: serializeDate(today()),
|
|
},
|
|
{
|
|
date_deadline: serializeDate(tomorrow),
|
|
res_id: activityIds[1],
|
|
res_model: "mail.test.activity",
|
|
},
|
|
{
|
|
date_deadline: serializeDate(tomorrow),
|
|
res_id: activityIds[2],
|
|
res_model: "mail.test.activity",
|
|
},
|
|
{
|
|
date_deadline: serializeDate(yesterday),
|
|
res_id: activityIds[3],
|
|
res_model: "mail.test.activity",
|
|
},
|
|
]);
|
|
const env = await start();
|
|
await contains(".o_menu_systray i[aria-label='Activities']");
|
|
await contains(".o-mail-ActivityMenu-counter");
|
|
await contains(".o-mail-ActivityMenu-counter", { text: "5" });
|
|
const actionChecks = {
|
|
context: {
|
|
force_search_count: 1,
|
|
search_default_activities_overdue: 1,
|
|
search_default_activities_today: 1,
|
|
},
|
|
domain: [["activity_user_id", "=", user.userId]],
|
|
};
|
|
patchWithCleanup(env.services.action, {
|
|
doAction(action) {
|
|
Object.entries(actionChecks).forEach(([key, value]) => {
|
|
if (Array.isArray(value) || typeof value === "object") {
|
|
expect(action[key]).toEqual(value);
|
|
} else {
|
|
expect(action[key]).toBe(value);
|
|
}
|
|
});
|
|
step("do_action:" + action.name);
|
|
},
|
|
});
|
|
await click(".o_menu_systray i[aria-label='Activities']");
|
|
await contains(".o-mail-ActivityMenu");
|
|
await contains(".o-mail-ActivityMenu .o-mail-ActivityGroup", { count: 2 });
|
|
await contains(".o-mail-ActivityMenu .o-mail-ActivityGroup", {
|
|
contains: [
|
|
["div[name='activityTitle']", { text: "res.partner" }],
|
|
["span", { text: "0 Late" }],
|
|
["span", { text: "1 Today" }],
|
|
["span", { text: "0 Future" }],
|
|
],
|
|
});
|
|
await contains(".o-mail-ActivityMenu .o-mail-ActivityGroup", {
|
|
contains: [
|
|
["div[name='activityTitle']", { text: "mail.test.activity" }],
|
|
["span", { text: "1 Late" }],
|
|
["span", { text: "1 Today" }],
|
|
["span", { text: "2 Future" }],
|
|
],
|
|
});
|
|
actionChecks.res_model = "res.partner";
|
|
await click(".o-mail-ActivityMenu .o-mail-ActivityGroup", { text: "res.partner" });
|
|
await contains(".o-mail-ActivityMenu", { count: 0 });
|
|
await click(".o_menu_systray i[aria-label='Activities']");
|
|
actionChecks.res_model = "mail.test.activity";
|
|
await click(".o-mail-ActivityMenu .o-mail-ActivityGroup", { text: "mail.test.activity" });
|
|
await assertSteps(["do_action:res.partner", "do_action:mail.test.activity"]);
|
|
});
|
|
|
|
test("activity menu widget: close on messaging menu click", async () => {
|
|
await start();
|
|
await click(".o_menu_systray i[aria-label='Activities']");
|
|
await contains(".o-mail-ActivityMenu");
|
|
await click(".o_menu_systray i[aria-label='Messages']");
|
|
await contains(".o-mail-ActivityMenu", { count: 0 });
|
|
});
|