/* @odoo-module */ import { startServer } from "@bus/../tests/helpers/mock_python_environment"; import { start } from "@mail/../tests/helpers/test_utils"; import { patchWithCleanup } from "@web/../tests/helpers/utils"; import { click, contains } from "@web/../tests/utils"; QUnit.module("pinned messages"); QUnit.test("Pin message", async () => { const pyEnv = await startServer(); const channelId = pyEnv["discuss.channel"].create({ name: "General" }); pyEnv["mail.message"].create({ body: "Hello world!", model: "discuss.channel", res_id: channelId, }); const { openDiscuss } = await start(); openDiscuss(channelId); await click(".o-mail-Discuss-header button[title='Pinned Messages']"); await contains(".o-discuss-PinnedMessagesPanel p", { text: "This channel doesn't have any pinned messages.", }); await click(".o-mail-Message [title='Expand']"); await click(".dropdown-item", { text: "Pin" }); await click(".modal-footer button", { text: "Yeah, pin it!" }); await contains(".o-discuss-PinnedMessagesPanel .o-mail-Message", { text: "Hello world!" }); }); QUnit.test("Unpin message", async () => { const pyEnv = await startServer(); const channelId = pyEnv["discuss.channel"].create({ name: "General" }); pyEnv["mail.message"].create({ body: "Hello world!", model: "discuss.channel", res_id: channelId, pinned_at: "2023-03-30 11:27:11", }); const { openDiscuss } = await start(); openDiscuss(channelId); await click(".o-mail-Discuss-header button[title='Pinned Messages']"); await contains(".o-discuss-PinnedMessagesPanel .o-mail-Message"); await click(".o-mail-Message [title='Expand']"); await click(".dropdown-item", { text: "Unpin" }); await click(".modal-footer button", { text: "Yes, remove it please" }); await contains(".o-discuss-PinnedMessagesPanel .o-mail-Message", { count: 0 }); }); QUnit.test("Deleted messages are not pinned", async () => { const pyEnv = await startServer(); const channelId = pyEnv["discuss.channel"].create({ name: "General" }); pyEnv["mail.message"].create({ body: "Hello world!", message_type: "comment", model: "discuss.channel", res_id: channelId, pinned_at: "2023-03-30 11:27:11", }); const { openDiscuss } = await start(); openDiscuss(channelId); await click(".o-mail-Discuss-header button[title='Pinned Messages']"); await contains(".o-discuss-PinnedMessagesPanel .o-mail-Message"); await click(".o-mail-Message [title='Expand']"); await click(".dropdown-item", { text: "Delete" }); await click("button", { text: "Confirm" }); await contains(".o-discuss-PinnedMessagesPanel .o-mail-Message", { count: 0 }); }); QUnit.test("Open pinned panel from notification", async () => { const pyEnv = await startServer(); const channelId = pyEnv["discuss.channel"].create({ name: "General" }); pyEnv["mail.message"].create({ body: "Hello world!", model: "discuss.channel", res_id: channelId, }); const { openDiscuss } = await start(); openDiscuss(channelId); await click(":nth-child(1 of .o-mail-Message) [title='Expand']"); await click(".dropdown-item", { text: "Pin" }); await click(".modal-footer button", { text: "Yeah, pin it!" }); await contains(".o-discuss-PinnedMessagesPanel", { count: 0 }); await click(".o_mail_notification a", { text: "See all pinned messages" }); await contains(".o-discuss-PinnedMessagesPanel"); }); QUnit.test("Jump to message", async () => { // make scroll behavior instantaneous. patchWithCleanup(Element.prototype, { scrollIntoView() { return super.scrollIntoView(true); }, }); const pyEnv = await startServer(); const channelId = pyEnv["discuss.channel"].create({ name: "General" }); pyEnv["mail.message"].create({ body: "Hello world!", model: "discuss.channel", res_id: channelId, pinned_at: "2023-04-03 08:15:04", }); for (let i = 0; i < 20; i++) { pyEnv["mail.message"].create({ body: "Non Empty Body ".repeat(25), message_type: "comment", model: "discuss.channel", res_id: channelId, }); } const { openDiscuss } = await start(); openDiscuss(channelId); await click(".o-mail-Discuss-header button[title='Pinned Messages']"); await click(".o-discuss-PinnedMessagesPanel button", { text: "Jump" }); await contains(".o-mail-Thread .o-mail-Message-body", { text: "Hello world!", visible: true }); }); QUnit.test("Jump to message from notification", async () => { const pyEnv = await startServer(); const channelId = pyEnv["discuss.channel"].create({ name: "General" }); pyEnv["mail.message"].create({ body: "Hello world!", model: "discuss.channel", res_id: channelId, }); for (let i = 0; i < 20; i++) { pyEnv["mail.message"].create({ body: "Non Empty Body ".repeat(25), message_type: "comment", model: "discuss.channel", res_id: channelId, }); } const { openDiscuss } = await start(); openDiscuss(channelId); await contains(".o-mail-Message", { count: 21 }); await click(":nth-child(1 of .o-mail-Message) [title='Expand']"); await click(".dropdown-item", { text: "Pin" }); await click(".modal-footer button", { text: "Yeah, pin it!" }); await contains(".o_mail_notification"); await contains(".o-mail-Thread", { scroll: "bottom" }); await click(".o_mail_notification a", { text: "message" }); await contains(".o-mail-Thread", { count: 0, scroll: "bottom" }); });