Odoo18-Base/addons/web/static/tests/views/calendar/calendar_common_popover.test.js
2025-01-06 10:57:38 +07:00

164 lines
4.8 KiB
JavaScript

import { describe, expect, test } from "@odoo/hoot";
import { click } from "@odoo/hoot-dom";
import { mountWithCleanup } from "@web/../tests/web_test_helpers";
import { DEFAULT_DATE, FAKE_MODEL } from "./calendar_test_helpers";
import { CalendarCommonPopover } from "@web/views/calendar/calendar_common/calendar_common_popover";
describe.current.tags("desktop");
const FAKE_RECORD = {
id: 5,
title: "Meeting",
isAllDay: false,
start: DEFAULT_DATE,
end: DEFAULT_DATE.plus({ hours: 3, minutes: 15 }),
colorIndex: 0,
isTimeHidden: false,
rawRecord: {
name: "Meeting",
},
};
const FAKE_PROPS = {
model: FAKE_MODEL,
record: FAKE_RECORD,
createRecord() {},
deleteRecord() {},
editRecord() {},
close() {},
};
async function start(props = {}) {
await mountWithCleanup(CalendarCommonPopover, {
props: { ...FAKE_PROPS, ...props },
});
}
test(`mount a CalendarCommonPopover`, async () => {
await start();
expect(`.popover-header`).toHaveCount(1);
expect(`.popover-header`).toHaveText("Meeting");
expect(`.list-group`).toHaveCount(2);
expect(`.list-group.o_cw_popover_fields_secondary`).toHaveCount(1);
expect(`.card-footer .o_cw_popover_edit`).toHaveCount(1);
expect(`.card-footer .o_cw_popover_delete`).toHaveCount(1);
});
test(`date duration: is all day and is same day`, async () => {
await start({
record: { ...FAKE_RECORD, isAllDay: true, isTimeHidden: true },
});
expect(`.list-group:eq(0)`).toHaveText("July 16, 2021");
});
test(`date duration: is all day and two days duration`, async () => {
await start({
record: {
...FAKE_RECORD,
end: DEFAULT_DATE.plus({ days: 1 }),
isAllDay: true,
isTimeHidden: true,
},
});
expect(`.list-group:eq(0)`).toHaveText("July 16-17, 2021 2 days");
});
test(`time duration: 1 hour diff`, async () => {
await start({
record: { ...FAKE_RECORD, end: DEFAULT_DATE.plus({ hours: 1 }) },
model: { ...FAKE_MODEL, isDateHidden: true },
});
expect(`.list-group:eq(0)`).toHaveText("08:00 - 09:00 (1 hour)");
});
test(`time duration: 2 hours diff`, async () => {
await start({
record: { ...FAKE_RECORD, end: DEFAULT_DATE.plus({ hours: 2 }) },
model: { ...FAKE_MODEL, isDateHidden: true },
});
expect(`.list-group:eq(0)`).toHaveText("08:00 - 10:00 (2 hours)");
});
test(`time duration: 1 minute diff`, async () => {
await start({
record: { ...FAKE_RECORD, end: DEFAULT_DATE.plus({ minutes: 1 }) },
model: { ...FAKE_MODEL, isDateHidden: true },
});
expect(`.list-group:eq(0)`).toHaveText("08:00 - 08:01 (1 minute)");
});
test(`time duration: 2 minutes diff`, async () => {
await start({
record: { ...FAKE_RECORD, end: DEFAULT_DATE.plus({ minutes: 2 }) },
model: { ...FAKE_MODEL, isDateHidden: true },
});
expect(`.list-group:eq(0)`).toHaveText("08:00 - 08:02 (2 minutes)");
});
test(`time duration: 3 hours and 15 minutes diff`, async () => {
await start({
model: { ...FAKE_MODEL, isDateHidden: true },
});
expect(`.list-group:eq(0)`).toHaveText("08:00 - 11:15 (3 hours, 15 minutes)");
});
test(`isDateHidden is true`, async () => {
await start({
model: { ...FAKE_MODEL, isDateHidden: true },
});
expect(`.list-group:eq(0)`).toHaveText("08:00 - 11:15 (3 hours, 15 minutes)");
});
test(`isDateHidden is false`, async () => {
await start({
model: { ...FAKE_MODEL, isDateHidden: false },
});
expect(`.list-group:eq(0)`).toHaveText("July 16, 2021\n08:00 - 11:15 (3 hours, 15 minutes)");
});
test(`isTimeHidden is true`, async () => {
await start({
record: { ...FAKE_RECORD, isTimeHidden: true },
});
expect(`.list-group:eq(0)`).toHaveText("July 16, 2021");
});
test(`isTimeHidden is false`, async () => {
await start({
record: { ...FAKE_RECORD, isTimeHidden: false },
});
expect(`.list-group:eq(0)`).toHaveText("July 16, 2021\n08:00 - 11:15 (3 hours, 15 minutes)");
});
test(`canDelete is true`, async () => {
await start({
model: { ...FAKE_MODEL, canDelete: true },
});
expect(`.o_cw_popover_delete`).toHaveCount(1);
});
test(`canDelete is false`, async () => {
await start({
model: { ...FAKE_MODEL, canDelete: false },
});
expect(`.o_cw_popover_delete`).toHaveCount(0);
});
test(`click on delete button`, async () => {
await start({
model: { ...FAKE_MODEL, canDelete: true },
deleteRecord: () => expect.step("delete"),
});
await click(`.o_cw_popover_delete`);
expect.verifySteps(["delete"]);
});
test(`click on edit button`, async () => {
await start({
editRecord: () => expect.step("edit"),
});
await click(`.o_cw_popover_edit`);
expect.verifySteps(["edit"]);
});