191 lines
6.9 KiB
JavaScript
191 lines
6.9 KiB
JavaScript
/* @odoo-module */
|
|
|
|
import { startServer } from "@bus/../tests/helpers/mock_python_environment";
|
|
|
|
import {
|
|
CHAT_WINDOW_END_GAP_WIDTH,
|
|
CHAT_WINDOW_INBETWEEN_WIDTH,
|
|
CHAT_WINDOW_WIDTH,
|
|
} from "@mail/core/common/chat_window_service";
|
|
import { Command } from "@mail/../tests/helpers/command";
|
|
import { patchUiSize } from "@mail/../tests/helpers/patch_ui_size";
|
|
import { start } from "@mail/../tests/helpers/test_utils";
|
|
|
|
import { click, contains } from "@web/../tests/utils";
|
|
|
|
QUnit.module("chat window manager");
|
|
|
|
QUnit.test("chat window does not fetch messages if hidden", async (assert) => {
|
|
const pyEnv = await startServer();
|
|
const [channeId1, channelId2, channelId3] = pyEnv["discuss.channel"].create([
|
|
{
|
|
channel_member_ids: [
|
|
Command.create({ is_minimized: true, partner_id: pyEnv.currentPartnerId }),
|
|
],
|
|
},
|
|
{
|
|
channel_member_ids: [
|
|
Command.create({ is_minimized: true, partner_id: pyEnv.currentPartnerId }),
|
|
],
|
|
},
|
|
{
|
|
channel_member_ids: [
|
|
Command.create({ is_minimized: true, partner_id: pyEnv.currentPartnerId }),
|
|
],
|
|
},
|
|
]);
|
|
pyEnv["mail.message"].create([
|
|
{
|
|
body: "Orange",
|
|
res_id: channeId1,
|
|
message_type: "comment",
|
|
model: "discuss.channel",
|
|
},
|
|
{
|
|
body: "Apple",
|
|
res_id: channelId2,
|
|
message_type: "comment",
|
|
model: "discuss.channel",
|
|
},
|
|
{
|
|
body: "Banana",
|
|
res_id: channelId3,
|
|
message_type: "comment",
|
|
model: "discuss.channel",
|
|
},
|
|
]);
|
|
patchUiSize({ width: 900 });
|
|
assert.ok(
|
|
CHAT_WINDOW_END_GAP_WIDTH * 2 + CHAT_WINDOW_WIDTH * 2 + CHAT_WINDOW_INBETWEEN_WIDTH < 900
|
|
);
|
|
assert.ok(
|
|
CHAT_WINDOW_END_GAP_WIDTH * 2 + CHAT_WINDOW_WIDTH * 3 + CHAT_WINDOW_INBETWEEN_WIDTH * 2 >
|
|
900
|
|
);
|
|
await start({
|
|
mockRPC(route, args) {
|
|
if (route === "/discuss/channel/messages") {
|
|
assert.step("fetch_messages");
|
|
}
|
|
},
|
|
});
|
|
await contains(".o-mail-ChatWindow", { count: 2 });
|
|
await contains(".o-mail-ChatWindowHiddenToggler");
|
|
await contains(".o-mail-Message-content", { text: "Orange" });
|
|
await contains(".o-mail-Message-content", { count: 0, text: "Apple" });
|
|
await contains(".o-mail-Message-content", { text: "Banana" });
|
|
assert.verifySteps(["fetch_messages", "fetch_messages"]);
|
|
});
|
|
|
|
QUnit.test("click on hidden chat window should fetch its messages", async (assert) => {
|
|
const pyEnv = await startServer();
|
|
const [channeId1, channelId2, channelId3] = pyEnv["discuss.channel"].create([
|
|
{
|
|
channel_member_ids: [
|
|
Command.create({ is_minimized: true, partner_id: pyEnv.currentPartnerId }),
|
|
],
|
|
},
|
|
{
|
|
channel_member_ids: [
|
|
Command.create({ is_minimized: true, partner_id: pyEnv.currentPartnerId }),
|
|
],
|
|
},
|
|
{
|
|
channel_member_ids: [
|
|
Command.create({ is_minimized: true, partner_id: pyEnv.currentPartnerId }),
|
|
],
|
|
},
|
|
]);
|
|
pyEnv["mail.message"].create([
|
|
{
|
|
body: "Orange",
|
|
res_id: channeId1,
|
|
message_type: "comment",
|
|
model: "discuss.channel",
|
|
},
|
|
{
|
|
body: "Apple",
|
|
res_id: channelId2,
|
|
message_type: "comment",
|
|
model: "discuss.channel",
|
|
},
|
|
{
|
|
body: "Banana",
|
|
res_id: channelId3,
|
|
message_type: "comment",
|
|
model: "discuss.channel",
|
|
},
|
|
]);
|
|
patchUiSize({ width: 900 });
|
|
assert.ok(
|
|
CHAT_WINDOW_END_GAP_WIDTH * 2 + CHAT_WINDOW_WIDTH * 2 + CHAT_WINDOW_INBETWEEN_WIDTH < 900
|
|
);
|
|
assert.ok(
|
|
CHAT_WINDOW_END_GAP_WIDTH * 2 + CHAT_WINDOW_WIDTH * 3 + CHAT_WINDOW_INBETWEEN_WIDTH * 2 >
|
|
900
|
|
);
|
|
await start({
|
|
mockRPC(route, args) {
|
|
if (route === "/discuss/channel/messages") {
|
|
assert.step("fetch_messages");
|
|
}
|
|
},
|
|
});
|
|
await contains(".o-mail-ChatWindow", { count: 2 });
|
|
await contains(".o-mail-ChatWindowHiddenToggler");
|
|
await contains(".o-mail-Message-content", { text: "Orange" });
|
|
await contains(".o-mail-Message-content", { count: 0, text: "Apple" });
|
|
await contains(".o-mail-Message-content", { text: "Banana" });
|
|
assert.verifySteps(["fetch_messages", "fetch_messages"]);
|
|
await click(".o-mail-ChatWindowHiddenToggler");
|
|
await click(".o-mail-ChatWindowHiddenMenu-item .o-mail-ChatWindow-command[title='Open']");
|
|
await contains(".o-mail-Message-content", { text: "Orange" });
|
|
await contains(".o-mail-Message-content", { text: "Apple" });
|
|
await contains(".o-mail-Message", { count: 0, text: "Banana" });
|
|
assert.verifySteps(["fetch_messages"]);
|
|
});
|
|
|
|
QUnit.test(
|
|
"closing the last visible chat window should unhide the first hidden one",
|
|
async (assert) => {
|
|
const pyEnv = await startServer();
|
|
pyEnv["discuss.channel"].create([
|
|
{ name: "channel-A" },
|
|
{ name: "channel-B" },
|
|
{ name: "channel-C" },
|
|
{ name: "channel-D" },
|
|
]);
|
|
patchUiSize({ width: 900 });
|
|
assert.ok(
|
|
CHAT_WINDOW_END_GAP_WIDTH * 2 + CHAT_WINDOW_WIDTH * 2 + CHAT_WINDOW_INBETWEEN_WIDTH <
|
|
900
|
|
);
|
|
assert.ok(
|
|
CHAT_WINDOW_END_GAP_WIDTH * 2 +
|
|
CHAT_WINDOW_WIDTH * 3 +
|
|
CHAT_WINDOW_INBETWEEN_WIDTH * 2 >
|
|
900
|
|
);
|
|
await start();
|
|
await click(".o_menu_systray i[aria-label='Messages']");
|
|
await click(".o-mail-NotificationItem", { text: "channel-A" });
|
|
await contains(".o-mail-ChatWindow");
|
|
await click(".o_menu_systray i[aria-label='Messages']");
|
|
await click(".o-mail-NotificationItem", { text: "channel-B" });
|
|
await contains(".o-mail-ChatWindow", { count: 2 });
|
|
await click(".o_menu_systray i[aria-label='Messages']");
|
|
await click(".o-mail-NotificationItem", { text: "channel-C" });
|
|
await contains(".o-mail-ChatWindowHiddenToggler", { text: "1" });
|
|
await click(".o_menu_systray i[aria-label='Messages']");
|
|
await click(".o-mail-NotificationItem", { text: "channel-D" });
|
|
await contains(".o-mail-ChatWindowHiddenToggler", { text: "2" });
|
|
await contains(":nth-child(1 of .o-mail-ChatWindow)", { text: "channel-A" });
|
|
await contains(":nth-child(2 of .o-mail-ChatWindow)", { text: "channel-D" });
|
|
await click(".o-mail-ChatWindow-command[title='Close Chat Window']", {
|
|
parent: [".o-mail-ChatWindow", { text: "channel-D" }],
|
|
});
|
|
await contains(":nth-child(1 of .o-mail-ChatWindow)", { text: "channel-A" });
|
|
await contains(":nth-child(2 of .o-mail-ChatWindow)", { text: "channel-C" });
|
|
}
|
|
);
|