mail/static/tests/discuss_app/im_status_tests.js

102 lines
3.8 KiB
JavaScript
Raw Normal View History

2024-05-03 12:40:35 +03:00
/* @odoo-module */
import { UPDATE_BUS_PRESENCE_DELAY } from "@bus/im_status_service";
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 } from "@web/../tests/utils";
QUnit.module("im status");
QUnit.test("initially online", async () => {
const pyEnv = await startServer();
const partnerId = pyEnv["res.partner"].create({ name: "Demo", im_status: "online" });
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 } = await start();
openDiscuss(channelId);
await contains(".o-mail-ImStatus i[title='Online']");
});
QUnit.test("initially offline", async () => {
const pyEnv = await startServer();
const partnerId = pyEnv["res.partner"].create({ name: "Demo", im_status: "offline" });
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 } = await start();
openDiscuss(channelId);
await contains(".o-mail-ImStatus i[title='Offline']");
});
QUnit.test("initially away", async () => {
const pyEnv = await startServer();
const partnerId = pyEnv["res.partner"].create({ name: "Demo", im_status: "away" });
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 } = await start();
openDiscuss(channelId);
await contains(".o-mail-ImStatus i[title='Idle']");
});
QUnit.test("change icon on change partner im_status", async () => {
const pyEnv = await startServer();
const partnerId = pyEnv["res.partner"].create({ name: "Demo", im_status: "online" });
const channelId = pyEnv["discuss.channel"].create({
channel_member_ids: [
Command.create({ partner_id: pyEnv.currentPartnerId }),
Command.create({ partner_id: partnerId }),
],
channel_type: "chat",
});
const { advanceTime, openDiscuss } = await start({ hasTimeControl: true });
openDiscuss(channelId);
await contains(".o-mail-ImStatus i[title='Online']");
pyEnv["res.partner"].write([partnerId], { im_status: "offline" });
advanceTime(UPDATE_BUS_PRESENCE_DELAY);
await contains(".o-mail-ImStatus i[title='Offline']");
pyEnv["res.partner"].write([partnerId], { im_status: "away" });
advanceTime(UPDATE_BUS_PRESENCE_DELAY);
await contains(".o-mail-ImStatus i[title='Idle']");
pyEnv["res.partner"].write([partnerId], { im_status: "online" });
advanceTime(UPDATE_BUS_PRESENCE_DELAY);
await contains(".o-mail-ImStatus i[title='Online']");
});
QUnit.test("show im status in messaging menu preview of chat", async () => {
const pyEnv = await startServer();
const partnerId = pyEnv["res.partner"].create({ name: "Demo", im_status: "online" });
pyEnv["discuss.channel"].create({
channel_member_ids: [
Command.create({ partner_id: pyEnv.currentPartnerId }),
Command.create({ partner_id: partnerId }),
],
channel_type: "chat",
});
await start();
await click(".o_menu_systray i[aria-label='Messages']");
await contains(".o-mail-NotificationItem", {
text: "Demo",
contains: ["i[aria-label='User is online']"],
});
});