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