im_livechat/static/tests/go_to_oldest_unread_thread_tests.js

261 lines
9.7 KiB
JavaScript
Raw Permalink Normal View History

/* @odoo-module */
import { startServer } from "@bus/../tests/helpers/mock_python_environment";
import { insertText, contains, focus } from "@web/../tests/utils";
import { Command } from "@mail/../tests/helpers/command";
import { triggerHotkey } from "@web/../tests/helpers/utils";
import { patchUiSize } from "@mail/../tests/helpers/patch_ui_size";
import { start } from "@mail/../tests/helpers/test_utils";
QUnit.module("go to oldest unread livechat");
QUnit.test("tab on discuss composer goes to oldest unread livechat", async () => {
const pyEnv = await startServer();
const guestId_1 = pyEnv["mail.guest"].create({ name: "Visitor 11" });
const guestId_2 = pyEnv["mail.guest"].create({ name: "Visitor 12" });
const guestId_3 = pyEnv["mail.guest"].create({ name: "Visitor 13" });
const channelIds = pyEnv["discuss.channel"].create([
{
anonymous_name: "Visitor 11",
channel_member_ids: [
Command.create({ partner_id: pyEnv.currentPartnerId }),
Command.create({ guest_id: guestId_1 }),
],
channel_type: "livechat",
livechat_operator_id: pyEnv.currentPartnerId,
name: "Livechat 1",
},
{
anonymous_name: "Visitor 12",
channel_member_ids: [
Command.create({
partner_id: pyEnv.currentPartnerId,
message_unread_counter: 1,
last_interest_dt: "2021-01-02 10:00:00",
}),
Command.create({ guest_id: guestId_2 }),
],
channel_type: "livechat",
livechat_operator_id: pyEnv.currentPartnerId,
name: "Livechat 2",
},
{
anonymous_name: "Visitor 13",
channel_member_ids: [
Command.create({
partner_id: pyEnv.currentPartnerId,
message_unread_counter: 1,
last_interest_dt: "2021-01-01 10:00:00",
}),
Command.create({ guest_id: guestId_3 }),
],
channel_type: "livechat",
livechat_operator_id: pyEnv.currentPartnerId,
name: "Livechat 3",
},
]);
pyEnv["mail.message"].create([
{
author_guest_id: guestId_2,
body: "Hello",
model: "discuss.channel",
res_id: channelIds[1],
},
{
author_guest_id: guestId_3,
body: "Hello",
model: "discuss.channel",
res_id: channelIds[2],
},
]);
const { openDiscuss } = await start();
await openDiscuss(channelIds[0]);
await contains(".o-mail-DiscussSidebarChannel.o-active", { text: "Visitor 11" });
await contains(".o-mail-Composer-footer", { text: "Tab to next livechat" });
await focus(".o-mail-Composer-input");
await contains(".o-active .o-mail-DiscussSidebar-badge", { count: 0 });
triggerHotkey("Tab");
await contains(".o-mail-DiscussSidebarChannel.o-active", { text: "Visitor 13" });
await focus(".o-mail-Composer-input");
await contains(".o-active .o-mail-DiscussSidebar-badge", { count: 0 });
triggerHotkey("Tab");
await contains(".o-mail-DiscussSidebarChannel.o-active", { text: "Visitor 12" });
});
QUnit.test("switching to folded chat window unfolds it [REQUIRE FOCUS]", async () => {
const pyEnv = await startServer();
const guestId_1 = pyEnv["mail.guest"].create({ name: "Visitor 11" });
const guestId_2 = pyEnv["mail.guest"].create({ name: "Visitor 12" });
pyEnv["discuss.channel"].create([
{
anonymous_name: "Visitor 11",
channel_member_ids: [
Command.create({
partner_id: pyEnv.currentPartnerId,
fold_state: "open",
is_minimized: true,
}),
Command.create({ guest_id: guestId_1 }),
],
channel_type: "livechat",
livechat_operator_id: pyEnv.currentPartnerId,
name: "Livechat 1",
},
{
anonymous_name: "Visitor 12",
channel_member_ids: [
Command.create({
partner_id: pyEnv.currentPartnerId,
fold_state: "folded",
is_minimized: true,
message_unread_counter: 1,
last_interest_dt: "2021-01-02 10:00:00",
}),
Command.create({ guest_id: guestId_2 }),
],
channel_type: "livechat",
livechat_operator_id: pyEnv.currentPartnerId,
name: "Livechat 2",
},
]);
await start();
await contains(".o-mail-ChatWindow.o-folded", { text: "Visitor 12" });
await focus(".o-mail-Composer-input", {
parent: [".o-mail-ChatWindow", { text: "Visitor 11" }],
});
triggerHotkey("Tab");
await contains(".o-mail-ChatWindow", {
text: "Visitor 12",
contains: [".o-mail-Composer-input:focus"],
});
});
QUnit.test("switching to hidden chat window unhides it [REQUIRE FOCUS]", async () => {
const pyEnv = await startServer();
const guestId_1 = pyEnv["mail.guest"].create({ name: "Visitor 11" });
const guestId_2 = pyEnv["mail.guest"].create({ name: "Visitor 12" });
pyEnv["discuss.channel"].create([
{
anonymous_name: "Visitor 11",
channel_member_ids: [
Command.create({
partner_id: pyEnv.currentPartnerId,
is_minimized: true,
}),
Command.create({ guest_id: guestId_1 }),
],
channel_type: "livechat",
livechat_operator_id: pyEnv.currentPartnerId,
name: "Livechat 1",
},
{
anonymous_name: "Visitor 12",
channel_member_ids: [
Command.create({
partner_id: pyEnv.currentPartnerId,
is_minimized: true,
message_unread_counter: 1,
last_interest_dt: "2021-01-02 10:00:00",
}),
Command.create({ guest_id: guestId_2 }),
],
channel_type: "livechat",
livechat_operator_id: pyEnv.currentPartnerId,
name: "Livechat 2",
},
{
channel_member_ids: [
Command.create({ partner_id: pyEnv.currentPartnerId, is_minimized: true }),
],
},
]);
patchUiSize({ width: 900 }); // enough for 2 chat windows
await start();
await contains(".o-mail-ChatWindow", { count: 2 });
await contains(".o-mail-ChatWindow", { count: 0, text: "Visitor 12" });
await focus(".o-mail-Composer-input", {
parent: [".o-mail-ChatWindow", { text: "Visitor 11" }],
});
triggerHotkey("Tab");
await contains(".o-mail-ChatWindow", {
text: "Visitor 12",
contains: [".o-mail-Composer-input:focus"],
});
});
QUnit.test("tab on composer doesn't switch thread if user is typing", async () => {
const pyEnv = await startServer();
const guestId_1 = pyEnv["mail.guest"].create({ name: "Visitor 11" });
const guestId_2 = pyEnv["mail.guest"].create({ name: "Visitor 12" });
const channelIds = pyEnv["discuss.channel"].create([
{
anonymous_name: "Visitor 11",
channel_member_ids: [
Command.create({ partner_id: pyEnv.currentPartnerId }),
Command.create({ guest_id: guestId_1 }),
],
channel_type: "livechat",
livechat_operator_id: pyEnv.currentPartnerId,
name: "Livechat 1",
},
{
anonymous_name: "Visitor 12",
channel_member_ids: [
Command.create({
partner_id: pyEnv.currentPartnerId,
message_unread_counter: 1,
last_interest_dt: "2021-01-02 10:00:00",
}),
Command.create({ guest_id: guestId_2 }),
],
channel_type: "livechat",
livechat_operator_id: pyEnv.currentPartnerId,
name: "Livechat 2",
},
]);
const { openDiscuss } = await start();
await openDiscuss(channelIds[0]);
await insertText(".o-mail-Composer-input", "Hello, ");
triggerHotkey("Tab");
await contains(".o-mail-DiscussSidebarChannel.o-active", { text: "Visitor 11" });
});
QUnit.test("tab on composer doesn't switch thread if no unread thread", async () => {
const pyEnv = await startServer();
const guestId_1 = pyEnv["mail.guest"].create({ name: "Visitor 11" });
const guestId_2 = pyEnv["mail.guest"].create({ name: "Visitor 12" });
const channelIds = pyEnv["discuss.channel"].create([
{
anonymous_name: "Visitor 11",
channel_member_ids: [
Command.create({ partner_id: pyEnv.currentPartnerId }),
Command.create({ guest_id: guestId_1 }),
],
channel_type: "livechat",
livechat_operator_id: pyEnv.currentPartnerId,
name: "Livechat 1",
},
{
anonymous_name: "Visitor 12",
channel_member_ids: [
Command.create({ partner_id: pyEnv.currentPartnerId }),
Command.create({ guest_id: guestId_2 }),
],
channel_type: "livechat",
livechat_operator_id: pyEnv.currentPartnerId,
name: "Livechat 2",
},
]);
const { openDiscuss } = await start();
await openDiscuss(channelIds[0]);
await focus(".o-mail-Composer-input");
triggerHotkey("Tab");
await contains(".o-mail-DiscussSidebarChannel.o-active", { text: "Visitor 11" });
});