calendar/static/tests/calendar_notification_tests.js

123 lines
4.6 KiB
JavaScript
Raw Permalink Normal View History

2024-05-03 12:43:00 +03:00
/* @odoo-module */
import { startServer } from "@bus/../tests/helpers/mock_python_environment";
import { calendarNotificationService } from "@calendar/js/services/calendar_notification_service";
import { start } from "@mail/../tests/helpers/test_utils";
import { registry } from "@web/core/registry";
import { click, contains } from "@web/../tests/utils";
const serviceRegistry = registry.category("services");
QUnit.module("Calendar Notification", (hooks) => {
hooks.beforeEach(() => {
serviceRegistry.add("calendarNotification", calendarNotificationService);
});
QUnit.test(
"can listen on bus and display notifications in DOM and click OK",
async (assert) => {
const pyEnv = await startServer();
const mockRPC = (route, args) => {
if (route === "/calendar/notify") {
return Promise.resolve([]);
}
if (route === "/calendar/notify_ack") {
assert.step("notifyAck");
return Promise.resolve(true);
}
};
await start({ mockRPC });
pyEnv["bus.bus"]._sendone(pyEnv.currentPartner, "calendar.alarm", [
{
alarm_id: 1,
event_id: 2,
title: "Meeting",
message: "Very old meeting message",
timer: 0,
notify_at: "1978-04-14 12:45:00",
},
]);
await contains(".o_notification", { text: "Very old meeting message" });
await click(".o_notification_buttons button", { text: "OK" });
await contains(".o_notification", { count: 0 });
assert.verifySteps(["notifyAck"]);
}
);
QUnit.test(
"can listen on bus and display notifications in DOM and click Detail",
async (assert) => {
const pyEnv = await startServer();
const mockRPC = (route, args) => {
if (route === "/calendar/notify") {
return Promise.resolve([]);
}
};
const fakeActionService = {
name: "action",
start() {
return {
doAction(actionId) {
assert.step(actionId.type);
return Promise.resolve(true);
},
loadState(state, options) {
return Promise.resolve(true);
},
};
},
};
serviceRegistry.add("action", fakeActionService, { force: true });
await start({ mockRPC });
pyEnv["bus.bus"]._sendone(pyEnv.currentPartner, "calendar.alarm", [
{
alarm_id: 1,
event_id: 2,
title: "Meeting",
message: "Very old meeting message",
timer: 0,
notify_at: "1978-04-14 12:45:00",
},
]);
await contains(".o_notification", { text: "Very old meeting message" });
await click(".o_notification_buttons button", { text: "Details" });
await contains(".o_notification", { count: 0 });
assert.verifySteps(["ir.actions.act_window"]);
}
);
QUnit.test(
"can listen on bus and display notifications in DOM and click Snooze",
async (assert) => {
const pyEnv = await startServer();
const mockRPC = (route, args) => {
if (route === "/calendar/notify") {
return Promise.resolve([]);
}
if (route === "/calendar/notify_ack") {
assert.step("notifyAck");
return Promise.resolve(true);
}
};
await start({ mockRPC });
pyEnv["bus.bus"]._sendone(pyEnv.currentPartner, "calendar.alarm", [
{
alarm_id: 1,
event_id: 2,
title: "Meeting",
message: "Very old meeting message",
timer: 0,
notify_at: "1978-04-14 12:45:00",
},
]);
await contains(".o_notification", { text: "Very old meeting message" });
await click(".o_notification button", { text: "Snooze" });
await contains(".o_notification", { count: 0 });
assert.verifySteps([], "should only close the notification withtout calling a rpc");
}
);
});