Odoo18-Base/addons/mail/static/tests/discuss/search_discuss.test.js

271 lines
9.6 KiB
JavaScript
Raw Permalink Normal View History

2025-01-06 10:57:38 +07:00
import {
click,
contains,
defineMailModels,
insertText,
onRpcBefore,
openDiscuss,
scroll,
start,
startServer,
triggerHotkey,
} from "@mail/../tests/mail_test_helpers";
import { describe, expect, test } from "@odoo/hoot";
import { tick } from "@odoo/hoot-mock";
import { serverState } from "@web/../tests/web_test_helpers";
import { HIGHLIGHT_CLASS } from "@mail/core/common/message_search_hook";
describe.current.tags("desktop");
defineMailModels();
test("Should have a search button", async () => {
const pyEnv = await startServer();
const channelId = pyEnv["discuss.channel"].create({ name: "General" });
await start();
await openDiscuss(channelId);
await contains("[title='Search Messages']");
});
test("Should open the search panel when search button is clicked", async () => {
const pyEnv = await startServer();
const channelId = pyEnv["discuss.channel"].create({ name: "General" });
await start();
await openDiscuss(channelId);
await click("[title='Search Messages']");
await contains(".o-mail-SearchMessagesPanel");
await contains(".o_searchview");
await contains(".o_searchview_input");
});
test("Search a message", async () => {
const pyEnv = await startServer();
const channelId = pyEnv["discuss.channel"].create({ name: "General" });
pyEnv["mail.message"].create({
author_id: serverState.partnerId,
body: "This is a message",
attachment_ids: [],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
});
await start();
await openDiscuss(channelId);
await click("button[title='Search Messages']");
await insertText(".o_searchview_input", "message");
triggerHotkey("Enter");
await contains(".o-mail-SearchMessagesPanel .o-mail-Message");
});
test("Search should be hightlighted", async () => {
const pyEnv = await startServer();
const channelId = pyEnv["discuss.channel"].create({ name: "General" });
pyEnv["mail.message"].create({
author_id: serverState.partnerId,
body: "This is a message",
attachment_ids: [],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
});
await start();
await openDiscuss(channelId);
await click("[title='Search Messages']");
await insertText(".o_searchview_input", "message");
triggerHotkey("Enter");
await contains(`.o-mail-SearchMessagesPanel .o-mail-Message .${HIGHLIGHT_CLASS}`);
});
test("Search a starred message", async () => {
const pyEnv = await startServer();
const channelId = pyEnv["discuss.channel"].create({ name: "General" });
pyEnv["mail.message"].create({
author_id: serverState.partnerId,
body: "This is a message",
attachment_ids: [],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
starred_partner_ids: [serverState.partnerId],
});
await start();
await openDiscuss("mail.box_starred");
await click("[title='Search Messages']");
await insertText(".o_searchview_input", "message");
triggerHotkey("Enter");
await contains(".o-mail-SearchMessagesPanel .o-mail-Message");
});
test("Search a message in inbox", async () => {
const pyEnv = await startServer();
const channelId = pyEnv["discuss.channel"].create({ name: "General" });
pyEnv["mail.message"].create({
author_id: serverState.partnerId,
body: "This is a message",
attachment_ids: [],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
needaction: true,
});
await start();
await openDiscuss("mail.box_inbox");
await click("[title='Search Messages']");
await insertText(".o_searchview_input", "message");
triggerHotkey("Enter");
await contains(".o-mail-SearchMessagesPanel .o-mail-Message");
});
test("Search a message in history", async () => {
const pyEnv = await startServer();
const channelId = pyEnv["discuss.channel"].create({ name: "General" });
const messageId = pyEnv["mail.message"].create({
author_id: serverState.partnerId,
body: "This is a message",
attachment_ids: [],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
needaction: false,
});
pyEnv["mail.notification"].create({
is_read: true,
mail_message_id: messageId,
notification_status: "sent",
notification_type: "inbox",
res_partner_id: serverState.partnerId,
});
await start();
await openDiscuss("mail.box_history");
await click("[title='Search Messages']");
await insertText(".o_searchview_input", "message");
triggerHotkey("Enter");
await contains(".o-mail-SearchMessagesPanel .o-mail-Message");
});
test("Should close the search panel when search button is clicked again", async () => {
const pyEnv = await startServer();
const channelId = pyEnv["discuss.channel"].create({ name: "General" });
await start();
await openDiscuss(channelId);
await click("[title='Search Messages']");
await click("[title='Close Search']");
await contains(".o-mail-SearchMessagesPanel");
});
test("Search a message in 60 messages should return 30 message first", async () => {
const pyEnv = await startServer();
const channelId = pyEnv["discuss.channel"].create({ name: "General" });
for (let i = 0; i < 60; i++) {
pyEnv["mail.message"].create({
author_id: serverState.partnerId,
body: "This is a message",
attachment_ids: [],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
});
}
await start();
await openDiscuss(channelId);
await click("[title='Search Messages']");
await insertText(".o_searchview_input", "message");
triggerHotkey("Enter");
await contains(".o-mail-SearchMessagesPanel .o-mail-Message", { count: 30 });
// give enough time to useVisible to potentially load more (unexpected) messages
await tick();
await contains(".o-mail-SearchMessagesPanel .o-mail-Message", { count: 30 });
});
test("Scrolling to the bottom should load more searched message", async () => {
const pyEnv = await startServer();
const channelId = pyEnv["discuss.channel"].create({ name: "General" });
for (let i = 0; i < 90; i++) {
pyEnv["mail.message"].create({
author_id: serverState.partnerId,
body: "This is a message",
attachment_ids: [],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
});
}
await start();
await openDiscuss(channelId);
await click("[title='Search Messages']");
await insertText(".o_searchview_input", "message");
triggerHotkey("Enter");
await contains(".o-mail-SearchMessagesPanel .o-mail-Message", { count: 30 });
await scroll(".o-mail-SearchMessagesPanel .o-mail-ActionPanel", "bottom");
await contains(".o-mail-SearchMessagesPanel .o-mail-Message", { count: 60 });
// give enough time to useVisible to potentially load more (unexpected) messages
await tick();
await contains(".o-mail-SearchMessagesPanel .o-mail-Message", { count: 60 });
});
test("Editing the searched term should not edit the current searched term", async () => {
const pyEnv = await startServer();
const channelId = pyEnv["discuss.channel"].create({ name: "General" });
for (let i = 0; i < 60; i++) {
pyEnv["mail.message"].create({
author_id: serverState.partnerId,
body: "This is a message",
attachment_ids: [],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
});
}
onRpcBefore("/discuss/channel/messages", (args) => {
if (args.search_term) {
const { search_term } = args;
expect(search_term).toBe("message");
}
});
await start();
await openDiscuss(channelId);
await click("[title='Search Messages']");
await insertText(".o_searchview_input", "message");
triggerHotkey("Enter");
await insertText(".o_searchview_input", "test");
await scroll(".o-mail-SearchMessagesPanel .o-mail-ActionPanel", "bottom");
});
test("Search a message containing round brackets", async () => {
const pyEnv = await startServer();
const channelId = pyEnv["discuss.channel"].create({ name: "General" });
pyEnv["mail.message"].create({
author_id: serverState.partnerId,
body: "This is a (message)",
attachment_ids: [],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
});
await start();
await openDiscuss(channelId);
await click("button[title='Search Messages']");
await insertText(".o_searchview_input", "(message");
triggerHotkey("Enter");
await contains(".o-mail-SearchMessagesPanel .o-mail-Message");
});
test("Search a message containing single quotes", async () => {
const pyEnv = await startServer();
const channelId = pyEnv["discuss.channel"].create({ name: "General" });
pyEnv["mail.message"].create({
author_id: serverState.partnerId,
body: "I can't do it",
attachment_ids: [],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
});
await start();
await openDiscuss(channelId);
await click("button[title='Search Messages']");
await insertText(".o_searchview_input", "can't");
triggerHotkey("Enter");
await contains(".o-mail-SearchMessagesPanel .o-mail-Message");
});