mail/static/tests/message/link_preview_test.js

382 lines
15 KiB
JavaScript
Raw Permalink Normal View History

2024-05-03 12:40:35 +03:00
/* @odoo-module */
import { startServer } from "@bus/../tests/helpers/mock_python_environment";
import { start } from "@mail/../tests/helpers/test_utils";
import { click, contains, insertText } from "@web/../tests/utils";
QUnit.module("link preview");
QUnit.test("auto layout with link preview list", async () => {
const pyEnv = await startServer();
const linkPreviewId = pyEnv["mail.link.preview"].create({
og_description: "test description",
og_image: "https://c.tenor.com/B_zYdea4l-4AAAAC/yay-minions.gif",
og_mimetype: "image/gif",
og_title: "Yay Minions GIF - Yay Minions Happiness - Discover & Share GIFs",
og_type: "video.other",
source_url: "https://tenor.com/view/yay-minions-happiness-happy-excited-gif-15324023",
});
const channelId = pyEnv["discuss.channel"].create({ name: "wololo" });
pyEnv["mail.message"].create({
body: "not empty",
link_preview_ids: [linkPreviewId],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
});
const { openDiscuss } = await start();
openDiscuss(channelId);
await contains(".o-mail-Message .o-mail-LinkPreviewList");
});
QUnit.test("auto layout with link preview as gif", async () => {
const pyEnv = await startServer();
const linkPreviewId = pyEnv["mail.link.preview"].create({
og_description: "test description",
og_image: "https://c.tenor.com/B_zYdea4l-4AAAAC/yay-minions.gif",
og_mimetype: "image/gif",
og_title: "Yay Minions GIF - Yay Minions Happiness - Discover & Share GIFs",
og_type: "video.other",
source_url: "https://tenor.com/view/yay-minions-happiness-happy-excited-gif-15324023",
});
const channelId = pyEnv["discuss.channel"].create({ name: "wololo" });
pyEnv["mail.message"].create({
body: "not empty",
link_preview_ids: [linkPreviewId],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
});
const { openDiscuss } = await start();
openDiscuss(channelId);
await contains(".o-mail-LinkPreviewImage");
});
QUnit.test("simplest card layout", async () => {
const pyEnv = await startServer();
const linkPreviewId = pyEnv["mail.link.preview"].create({
og_description: "Description",
og_title: "Article title",
og_type: "article",
2024-05-28 17:34:57 +03:00
source_url: "#",
2024-05-03 12:40:35 +03:00
});
const channelId = pyEnv["discuss.channel"].create({ name: "wololo" });
pyEnv["mail.message"].create({
body: "not empty",
link_preview_ids: [linkPreviewId],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
});
const { openDiscuss } = await start();
openDiscuss(channelId);
await contains(".o-mail-LinkPreviewCard");
await contains(".o-mail-LinkPreviewCard h6", { text: "Article title" });
await contains(".o-mail-LinkPreviewCard p", { text: "Description" });
});
QUnit.test("simplest card layout with image", async () => {
const pyEnv = await startServer();
const linkPreviewId = pyEnv["mail.link.preview"].create({
og_description: "Description",
og_image: "https://c.tenor.com/B_zYdea4l-4AAAAC/yay-minions.gif",
og_title: "Article title",
og_type: "article",
2024-05-28 17:34:57 +03:00
source_url: "#",
2024-05-03 12:40:35 +03:00
});
const channelId = pyEnv["discuss.channel"].create({ name: "wololo" });
pyEnv["mail.message"].create({
body: "not empty",
link_preview_ids: [linkPreviewId],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
});
const { openDiscuss } = await start();
openDiscuss(channelId);
await contains(".o-mail-LinkPreviewCard");
await contains(".o-mail-LinkPreviewCard h6", { text: "Article title" });
await contains(".o-mail-LinkPreviewCard p", { text: "Description" });
await contains(".o-mail-LinkPreviewCard img");
});
QUnit.test("Link preview video layout", async () => {
const pyEnv = await startServer();
const linkPreviewId = pyEnv["mail.link.preview"].create({
og_description: "Description",
og_image: "https://c.tenor.com/B_zYdea4l-4AAAAC/yay-minions.gif",
og_title: "video title",
og_type: "video.other",
2024-05-28 17:34:57 +03:00
source_url: "#",
2024-05-03 12:40:35 +03:00
});
const channelId = pyEnv["discuss.channel"].create({ name: "wololo" });
pyEnv["mail.message"].create({
body: "not empty",
link_preview_ids: [linkPreviewId],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
});
const { openDiscuss } = await start();
openDiscuss(channelId);
await contains(".o-mail-LinkPreviewVideo");
await contains(".o-mail-LinkPreviewVideo h6", { text: "video title" });
await contains(".o-mail-LinkPreviewVideo p", { text: "Description" });
await contains(".o-mail-LinkPreviewVideo-overlay");
});
QUnit.test("Link preview image layout", async () => {
const pyEnv = await startServer();
const linkPreviewId = pyEnv["mail.link.preview"].create({
image_mimetype: "image/jpg",
source_url:
"https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Siberischer_tiger_de_edit02.jpg/290px-Siberischer_tiger_de_edit02.jpg",
});
const channelId = pyEnv["discuss.channel"].create({ name: "wololo" });
pyEnv["mail.message"].create({
body: "not empty",
link_preview_ids: [linkPreviewId],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
});
const { openDiscuss } = await start();
openDiscuss(channelId);
await contains(".o-mail-LinkPreviewImage");
});
QUnit.test("Remove link preview Gif", async () => {
const pyEnv = await startServer();
const linkPreviewId = pyEnv["mail.link.preview"].create({
og_description: "test description",
og_image: "https://c.tenor.com/B_zYdea4l-4AAAAC/yay-minions.gif",
og_mimetype: "image/gif",
og_title: "Yay Minions GIF - Yay Minions Happiness - Discover & Share GIFs",
og_type: "video.other",
source_url: "https://tenor.com/view/yay-minions-happiness-happy-excited-gif-15324023",
});
const channelId = pyEnv["discuss.channel"].create({ name: "wololo" });
pyEnv["mail.message"].create({
body: "not empty",
link_preview_ids: [linkPreviewId],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
});
const { openDiscuss } = await start();
openDiscuss(channelId);
await click(".o-mail-LinkPreviewImage button[aria-label='Remove']");
await contains("p", { text: "Do you really want to delete this preview?" });
await click(".modal-footer button", { text: "Delete" });
await contains(".o-mail-LinkPreviewImage", { count: 0 });
});
QUnit.test("Remove link preview card", async () => {
const pyEnv = await startServer();
const linkPreviewId = pyEnv["mail.link.preview"].create({
og_description: "Description",
og_title: "Article title",
og_type: "article",
2024-05-28 17:34:57 +03:00
source_url: "#",
2024-05-03 12:40:35 +03:00
});
const channelId = pyEnv["discuss.channel"].create({ name: "wololo" });
pyEnv["mail.message"].create({
body: "not empty",
link_preview_ids: [linkPreviewId],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
});
const { openDiscuss } = await start();
openDiscuss(channelId);
await click(".o-mail-LinkPreviewCard button[aria-label='Remove']");
await contains("p", { text: "Do you really want to delete this preview?" });
await click(".modal-footer button", { text: "Delete" });
await contains(".o-mail-LinkPreviewCard", { count: 0 });
});
QUnit.test("Remove link preview video", async () => {
const pyEnv = await startServer();
const linkPreviewId = pyEnv["mail.link.preview"].create({
og_description: "Description",
og_image: "https://c.tenor.com/B_zYdea4l-4AAAAC/yay-minions.gif",
og_title: "video title",
og_type: "video.other",
2024-05-28 17:34:57 +03:00
source_url: "#",
2024-05-03 12:40:35 +03:00
});
const channelId = pyEnv["discuss.channel"].create({ name: "wololo" });
pyEnv["mail.message"].create({
body: "not empty",
link_preview_ids: [linkPreviewId],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
});
const { openDiscuss } = await start();
openDiscuss(channelId);
await click(".o-mail-LinkPreviewVideo button[aria-label='Remove']");
await contains("p", { text: "Do you really want to delete this preview?" });
await click(".modal-footer button", { text: "Delete" });
await contains(".o-mail-LinkPreviewVideo", { count: 0 });
});
QUnit.test("Remove link preview image", async () => {
const pyEnv = await startServer();
const linkPreviewId = pyEnv["mail.link.preview"].create({
image_mimetype: "image/jpg",
source_url:
"https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Siberischer_tiger_de_edit02.jpg/290px-Siberischer_tiger_de_edit02.jpg",
});
const channelId = pyEnv["discuss.channel"].create({ name: "wololo" });
pyEnv["mail.message"].create({
body: "not empty",
link_preview_ids: [linkPreviewId],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
});
const { openDiscuss } = await start();
openDiscuss(channelId);
await click(".o-mail-LinkPreviewImage button[aria-label='Remove']");
await contains("p", { text: "Do you really want to delete this preview?" });
await click(".modal-footer button", { text: "Delete" });
await contains(".o-mail-LinkPreviewImage", { count: 0 });
});
QUnit.test("No crash on receiving link preview of non-known message", async (assert) => {
const pyEnv = await startServer();
const linkPreviewId = pyEnv["mail.link.preview"].create({
image_mimetype: "image/jpg",
source_url:
"https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Siberischer_tiger_de_edit02.jpg/290px-Siberischer_tiger_de_edit02.jpg",
});
const channelId = pyEnv["discuss.channel"].create({ name: "wololo" });
const messageId = pyEnv["mail.message"].create({
body: "https://make-link-preview.com",
link_preview_ids: [linkPreviewId],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
});
const { env, openDiscuss } = await start();
openDiscuss();
env.services.rpc("/mail/link_preview", { message_id: messageId });
assert.ok(true);
env.services.rpc("/mail/link_preview/delete", { link_preview_ids: [linkPreviewId] });
assert.ok(true);
});
QUnit.test(
"Squash the message and the link preview when the link preview is an image and the link is the only text in the message",
async () => {
const pyEnv = await startServer();
const linkPreviewId = pyEnv["mail.link.preview"].create({
image_mimetype: "image/jpg",
source_url:
"https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Siberischer_tiger_de_edit02.jpg/290px-Siberischer_tiger_de_edit02.jpg",
});
const channelId = pyEnv["discuss.channel"].create({ name: "wololo" });
pyEnv["mail.message"].create({
body: "<a href='linkPreviewLink'>http://linkPreview</a>",
link_preview_ids: [linkPreviewId],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
});
const { openDiscuss } = await start();
openDiscuss(channelId);
await contains(".o-mail-LinkPreviewImage");
await contains(".o-mail-Message-bubble", { count: 0 });
}
);
QUnit.test(
"Link preview and message should not be squashed when the link preview is not an image",
async () => {
const pyEnv = await startServer();
const linkPreviewId = pyEnv["mail.link.preview"].create({
og_description: "Description",
og_title: "Article title",
og_type: "article",
2024-05-28 17:34:57 +03:00
source_url: "#",
2024-05-03 12:40:35 +03:00
});
const channelId = pyEnv["discuss.channel"].create({ name: "wololo" });
pyEnv["mail.message"].create({
body: "<a href='linkPreviewLink'>http://linkPreview</a>",
link_preview_ids: [linkPreviewId],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
});
const { openDiscuss } = await start();
openDiscuss(channelId);
await contains(".o-mail-Message-bubble");
}
);
QUnit.test(
"Link preview and message should not be squashed when there is more than the link in the message",
async () => {
const pyEnv = await startServer();
const linkPreviewId = pyEnv["mail.link.preview"].create({
image_mimetype: "image/jpg",
source_url:
"https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Siberischer_tiger_de_edit02.jpg/290px-Siberischer_tiger_de_edit02.jpg",
});
const channelId = pyEnv["discuss.channel"].create({ name: "wololo" });
pyEnv["mail.message"].create({
body: "<a href='linkPreviewLink'>http://linkPreview</a> not empty",
link_preview_ids: [linkPreviewId],
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
});
const { openDiscuss } = await start();
openDiscuss(channelId);
await contains(".o-mail-Message-bubble");
}
);
QUnit.test("Sending message with link preview URL should show a link preview card", async () => {
const pyEnv = await startServer();
const channelId = pyEnv["discuss.channel"].create({ name: "wololo" });
const { openDiscuss } = await start();
openDiscuss(channelId);
await insertText(".o-mail-Composer-input", "https://make-link-preview.com");
await click("button:not([disabled])", { text: "Send" });
await contains(".o-mail-LinkPreviewCard");
});
QUnit.test("Delete all link previews at once", async () => {
const pyEnv = await startServer();
const linkPreviewIds = pyEnv["mail.link.preview"].create([
{
og_description: "Description",
og_title: "Article title 1",
og_type: "article",
2024-05-28 17:34:57 +03:00
source_url: "#",
2024-05-03 12:40:35 +03:00
},
{
image_mimetype: "image/jpg",
source_url:
"https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Siberischer_tiger_de_edit02.jpg/290px-Siberischer_tiger_de_edit02.jpg",
},
]);
const channelId = pyEnv["discuss.channel"].create({ name: "wololo" });
pyEnv["mail.message"].create({
body: "not empty",
link_preview_ids: linkPreviewIds,
message_type: "comment",
model: "discuss.channel",
res_id: channelId,
});
const { openDiscuss } = await start();
openDiscuss(channelId);
await click(".o-mail-LinkPreviewCard button[aria-label='Remove']");
await click(".modal-footer button", { text: "Delete all previews" });
await contains(".o-mail-LinkPreviewCard", { count: 0 });
await contains(".o-mail-LinkPreviewImage", { count: 0 });
});