mail/static/tests/messaging/messaging_tests.js

86 lines
3.4 KiB
JavaScript
Raw Permalink Normal View History

2024-05-03 12:40:35 +03:00
/* @odoo-module */
import { startServer } from "@bus/../tests/helpers/mock_python_environment";
import { Command } from "@mail/../tests/helpers/command";
import { start } from "@mail/../tests/helpers/test_utils";
import { click, contains, insertText } from "@web/../tests/utils";
QUnit.module("messaging");
QUnit.test("Receiving a new message out of discuss app should open a chat window", async () => {
const pyEnv = await startServer();
const partnerId = pyEnv["res.partner"].create({ name: "Dumbledore" });
const userId = pyEnv["res.users"].create({ partner_id: partnerId });
const channelId = pyEnv["discuss.channel"].create({
channel_member_ids: [
Command.create({ partner_id: pyEnv.currentPartnerId }),
Command.create({ partner_id: partnerId }),
],
channel_type: "chat",
});
const { env } = await start();
// simulate receving new message
pyEnv.withUser(userId, () =>
env.services.rpc("/mail/message/post", {
post_data: { body: "new message", message_type: "comment" },
thread_id: channelId,
thread_model: "discuss.channel",
})
);
await contains(".o-mail-ChatWindow", { text: "Dumbledore" });
});
QUnit.test(
"Receiving a new message in discuss app should open a chat window after leaving discuss app",
async () => {
const pyEnv = await startServer();
const partnerId = pyEnv["res.partner"].create({ name: "Dumbledore" });
const userId = pyEnv["res.users"].create({ partner_id: partnerId });
const channelId = pyEnv["discuss.channel"].create({
channel_member_ids: [
Command.create({ partner_id: pyEnv.currentPartnerId }),
Command.create({ partner_id: partnerId }),
],
channel_type: "chat",
});
const { env, openDiscuss, openFormView } = await start();
await openDiscuss();
// simulate receiving new message
pyEnv.withUser(userId, () =>
env.services.rpc("/mail/message/post", {
post_data: { body: "new message", message_type: "comment" },
thread_id: channelId,
thread_model: "discuss.channel",
})
);
// leaving discuss.
await openFormView("res.partner", partnerId);
await contains(".o-mail-ChatWindow", { text: "Dumbledore" });
}
);
QUnit.test(
"Posting a message in discuss app should not open a chat window after leaving discuss app",
async () => {
const pyEnv = await startServer();
const partnerId = pyEnv["res.partner"].create({ name: "Dumbledore" });
const channelId = pyEnv["discuss.channel"].create({
channel_member_ids: [
Command.create({ partner_id: pyEnv.currentPartnerId }),
Command.create({ partner_id: partnerId }),
],
channel_type: "chat",
});
const { openDiscuss, openFormView } = await start();
await openDiscuss(channelId);
await insertText(".o-mail-Composer-input", "test https://www.odoo.com/");
await click(".o-mail-Composer-send:enabled");
// leaving discuss.
await openFormView("res.partner", partnerId);
// weak test, no guarantee that we waited long enough for the potential chat window to open
await contains(".o-mail-ChatWindow", { count: 0, text: "Dumbledore" });
}
);