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