Odoo18-Base/addons/mail/static/tests/tours/discuss_channel_public_tour.js
2025-01-06 10:57:38 +07:00

209 lines
7.9 KiB
JavaScript

import { registry } from "@web/core/registry";
import { click, contains, inputFiles } from "@web/../tests/utils";
registry.category("web_tour.tours").add("discuss_channel_public_tour.js", {
steps: () => [
{
trigger: ".o-mail-Discuss",
},
{
content: "Check that we are on channel page",
trigger: ".o-mail-Thread",
run() {
if (!window.location.pathname.startsWith("/discuss/channel")) {
console.error("Channel secret token is still present in URL.");
}
const errors = odoo.loader.findErrors();
if (Object.keys(errors).length) {
console.error("Couldn't load all JS modules.", errors);
}
document.body.classList.add("o_discuss_channel_public_modules_loaded");
if (
document.title !== document.querySelector(".o-mail-Discuss-threadName")?.value
) {
console.error("Tab title should match conversation name.");
}
},
},
{
content: "Wait for all modules loaded check in previous step",
trigger: ".o_discuss_channel_public_modules_loaded",
},
{
content: "Write something in composer",
trigger: ".o-mail-Composer-input",
run: "edit cheese",
},
{
content: "Add a text file in composer",
trigger: ".o-mail-Composer button[aria-label='Attach files']",
async run() {
const text = new File(["hello, world"], "text.txt", { type: "text/plain" });
await inputFiles(".o-mail-Composer-coreMain .o_input_file", [text]);
},
},
{
trigger: ".o-mail-AttachmentCard:not(.o-isUploading)", // waiting the attachment to be uploaded
},
{
content: "Check the text attachment is listed",
trigger: '.o-mail-AttachmentCard[title="text.txt"]',
},
{
content: "Add an image file in composer",
trigger: ".o-mail-Composer button[aria-label='Attach files']",
async run() {
await inputFiles(".o-mail-Composer-coreMain .o_input_file", [
new File(
[
await (
await fetch(
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQIW2P4v5ThPwAG7wKklwQ/bwAAAABJRU5ErkJggg=="
)
).blob(),
],
"image.png",
{ type: "image/png" }
),
]);
},
},
{
trigger: ".o-mail-AttachmentImage:not(.o-isUploading)",
},
{
content: "Check the image attachment is listed",
trigger: '.o-mail-AttachmentImage[title="image.png"]',
async run() {
const store = odoo.__WOWL_DEBUG__.root.env.services["mail.store"];
if (store.self.type === "guest") {
const src = this.anchor.querySelector("img").src;
const token = store.Attachment.get(
(src.match("/web/image/([0-9]+)") || []).at(-1)
)?.access_token;
if (!(token && src.includes(`access_token=${token}`))) {
throw new Error("Access token of the attachment isn't correct.");
}
}
},
},
{
content: "Send message",
trigger: ".o-mail-Composer-send:enabled",
run: "click",
},
{
content: "Check message is shown",
trigger: '.o-mail-Message-body:contains("cheese")',
},
{
content: "Check message contains the attachment",
trigger: '.o-mail-Message .o-mail-AttachmentCard:contains("text.txt")',
},
{
trigger: ".o-mail-Message-textContent:contains(cheese)",
run: "hover && click .o-mail-Message [title='Add a Reaction']",
},
{
trigger: ".o-EmojiPicker .o-Emoji:contains('🙂')",
run: "click",
},
{
content: "Reload page (fetch reactions)",
trigger: ".o-mail-Message",
run() {
location.reload();
},
},
{
content: "Remove reaction",
trigger: ".o-mail-MessageReaction:contains('🙂')",
run: "click",
},
{
content: "Reload page (fetch reactions)",
trigger: ".o-mail-Message",
run() {
location.reload();
},
},
{
trigger: ".o-mail-Message:not(:has(.o-mail-MessageReaction))",
},
{
content: "Click on more menu",
trigger: ".o-mail-Message-textContent:contains(cheese)",
run: "hover && click .o-mail-Message [title='Expand']",
},
{
content: "Click on edit",
trigger: ".o-mail-Message-moreMenu [title='Edit'], .o-mail-Message [title='Edit']",
run: "click",
},
{
content: "Edit message",
trigger: ".o-mail-Message .o-mail-Composer-input",
run: "edit vegetables",
},
{
content: "Add one more file in composer",
trigger: ".o-mail-Message button[aria-label='Attach files']",
async run() {
const extratxt = new File(["hello 2"], "extra.txt", { type: "text/plain" });
await inputFiles(".o-mail-Message .o_input_file", [extratxt]);
},
},
{
trigger: ".o-mail-Message .o-mail-Composer .o-mail-AttachmentCard:not(.o-isUploading)", // waiting the attachment to be uploaded
},
{
content: "Check the earlier provided extra attachment is listed",
trigger: '.o-mail-Message .o-mail-Composer .o-mail-AttachmentCard[title="extra.txt"]',
},
{
content: "Save edited message",
trigger: ".o-mail-Message a:contains(save)",
run: "click",
},
{
content: "Check message is edited",
trigger: '.o-mail-Message-body:contains("vegetables")',
},
{
content: "Check edited message contains the first attachment",
trigger: '.o-mail-Message .o-mail-AttachmentCard:contains("text.txt")',
},
{
content: "Check edited message contains the extra attachment",
trigger: '.o-mail-Message .o-mail-AttachmentCard:contains("extra.txt")',
async run() {
await click(".o-mail-AttachmentCard-unlink", {
parent: [".o-mail-AttachmentCard", { text: "extra.txt" }],
});
await click(".btn", { text: "Ok", parent: [".modal", { text: "Confirmation" }] });
await contains(".o-mail-AttachmentCard", { text: "extra.txt", count: 0 });
},
},
{
content: "Open search panel",
trigger: "button[title='Search Messages']",
run: "click",
},
{
content: "Search for the attachment name",
trigger: ".o_searchview_input",
run: "edit text.txt",
},
{
content: "Trigger the search",
trigger: "button[aria-label='Search button']",
run: "click",
},
{
content: "Check that searched message contains the attachment",
trigger:
'.o-mail-SearchMessagesPanel .o-mail-Message .o-mail-AttachmentCard:contains("text.txt")',
},
],
});