123 lines
4.6 KiB
JavaScript
123 lines
4.6 KiB
JavaScript
|
/* @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");
|
||
|
}
|
||
|
);
|
||
|
});
|