mirror of
https://github.com/bringout/oca-ocb-mail.git
synced 2026-04-23 06:22:06 +02:00
19.0 vanilla
This commit is contained in:
parent
5df8c07b59
commit
daa394e8b0
2114 changed files with 564841 additions and 299642 deletions
|
|
@ -0,0 +1,167 @@
|
|||
import {
|
||||
defineLivechatModels,
|
||||
loadDefaultEmbedConfig,
|
||||
} from "@im_livechat/../tests/livechat_test_helpers";
|
||||
import { expirableStorage } from "@im_livechat/core/common/expirable_storage";
|
||||
import {
|
||||
click,
|
||||
contains,
|
||||
insertText,
|
||||
listenStoreFetch,
|
||||
onRpcBefore,
|
||||
setupChatHub,
|
||||
start,
|
||||
startServer,
|
||||
STORE_FETCH_ROUTES,
|
||||
triggerHotkey,
|
||||
userContext,
|
||||
waitStoreFetch,
|
||||
} from "@mail/../tests/mail_test_helpers";
|
||||
import { describe, test } from "@odoo/hoot";
|
||||
import {
|
||||
asyncStep,
|
||||
Command,
|
||||
onRpc,
|
||||
serverState,
|
||||
waitForSteps,
|
||||
} from "@web/../tests/web_test_helpers";
|
||||
|
||||
describe.current.tags("desktop");
|
||||
defineLivechatModels();
|
||||
|
||||
test("persisted session history", async () => {
|
||||
const pyEnv = await startServer();
|
||||
const livechatChannelId = await loadDefaultEmbedConfig();
|
||||
const guestId = pyEnv["mail.guest"].create({ name: "Visitor 11" });
|
||||
const channelId = pyEnv["discuss.channel"].create({
|
||||
channel_member_ids: [
|
||||
Command.create({ partner_id: serverState.partnerId }),
|
||||
Command.create({ guest_id: guestId }),
|
||||
],
|
||||
channel_type: "livechat",
|
||||
livechat_channel_id: livechatChannelId,
|
||||
livechat_operator_id: serverState.partnerId,
|
||||
});
|
||||
expirableStorage.setItem(
|
||||
"im_livechat.saved_state",
|
||||
JSON.stringify({
|
||||
store: { "discuss.channel": [{ id: channelId }] },
|
||||
persisted: true,
|
||||
livechatUserId: serverState.publicUserId,
|
||||
})
|
||||
);
|
||||
pyEnv["mail.message"].create({
|
||||
author_id: serverState.partnerId,
|
||||
body: "Old message in history",
|
||||
res_id: channelId,
|
||||
model: "discuss.channel",
|
||||
message_type: "comment",
|
||||
});
|
||||
setupChatHub({ opened: [channelId] });
|
||||
await start({
|
||||
authenticateAs: { ...pyEnv["mail.guest"].read(guestId)[0], _name: "mail.guest" },
|
||||
});
|
||||
await contains(".o-mail-Message-content", { text: "Old message in history" });
|
||||
});
|
||||
|
||||
test("previous operator prioritized", async () => {
|
||||
const pyEnv = await startServer();
|
||||
const livechatChannelId = await loadDefaultEmbedConfig();
|
||||
const userId = pyEnv["res.users"].create({ name: "John Doe", im_status: "online" });
|
||||
const previousOperatorId = pyEnv["res.partner"].create({
|
||||
name: "John Doe",
|
||||
user_ids: [userId],
|
||||
});
|
||||
pyEnv["im_livechat.channel"].write([livechatChannelId], { user_ids: [Command.link(userId)] });
|
||||
expirableStorage.setItem("im_livechat_previous_operator", JSON.stringify(previousOperatorId));
|
||||
await start({ authenticateAs: false });
|
||||
await click(".o-livechat-LivechatButton");
|
||||
await contains(".o-mail-Message-author", { text: "John Doe" });
|
||||
});
|
||||
|
||||
test("Only necessary requests are made when creating a new chat", async () => {
|
||||
const pyEnv = await startServer();
|
||||
const livechatChannelId = await loadDefaultEmbedConfig();
|
||||
const operatorPartnerId = serverState.partnerId;
|
||||
onRpcBefore((route, args) => {
|
||||
if (!route.includes("assets") && !STORE_FETCH_ROUTES.includes(route)) {
|
||||
asyncStep(`${route} - ${JSON.stringify(args)}`);
|
||||
}
|
||||
});
|
||||
listenStoreFetch(undefined, { logParams: ["init_livechat"] });
|
||||
await start({ authenticateAs: false });
|
||||
await contains(".o-livechat-LivechatButton");
|
||||
await waitStoreFetch([
|
||||
"failures", // called because mail/core/web is loaded in test bundle
|
||||
"systray_get_activities", // called because mail/core/web is loaded in test bundle
|
||||
"init_messaging",
|
||||
["init_livechat", livechatChannelId],
|
||||
]);
|
||||
await click(".o-livechat-LivechatButton");
|
||||
await contains(".o-mail-Message", { text: "Hello, how may I help you?" });
|
||||
await waitForSteps([
|
||||
`/im_livechat/get_session - ${JSON.stringify({
|
||||
channel_id: livechatChannelId,
|
||||
previous_operator_id: null,
|
||||
persisted: false,
|
||||
})}`,
|
||||
]);
|
||||
await insertText(".o-mail-Composer-input", "Hello!");
|
||||
await waitForSteps([]);
|
||||
await triggerHotkey("Enter");
|
||||
await contains(".o-mail-Message", { text: "Hello!" });
|
||||
const [threadId] = pyEnv["discuss.channel"].search([], { order: "id DESC" });
|
||||
await waitStoreFetch(
|
||||
[
|
||||
"failures", // called because mail/core/web is loaded in test bundle
|
||||
"systray_get_activities", // called because mail/core/web is loaded in test bundle
|
||||
"init_messaging",
|
||||
],
|
||||
{
|
||||
stepsBefore: [
|
||||
`/im_livechat/get_session - ${JSON.stringify({
|
||||
channel_id: livechatChannelId,
|
||||
previous_operator_id: operatorPartnerId,
|
||||
persisted: true,
|
||||
})}`,
|
||||
`/mail/message/post - ${JSON.stringify({
|
||||
post_data: {
|
||||
body: "Hello!",
|
||||
email_add_signature: true,
|
||||
message_type: "comment",
|
||||
subtype_xmlid: "mail.mt_comment",
|
||||
},
|
||||
thread_id: threadId,
|
||||
thread_model: "discuss.channel",
|
||||
context: { ...userContext(), temporary_id: 0.8200000000000001 },
|
||||
})}`,
|
||||
],
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
test("do not create new thread when operator answers to visitor", async () => {
|
||||
const pyEnv = await startServer();
|
||||
const livechatChannelId = await loadDefaultEmbedConfig();
|
||||
const guestId = pyEnv["mail.guest"].create({ name: "Visitor 11" });
|
||||
onRpc("/im_livechat/get_session", async () => asyncStep("/im_livechat/get_session"));
|
||||
onRpc("/mail/message/post", async () => asyncStep("/mail/message/post"));
|
||||
const channelId = pyEnv["discuss.channel"].create({
|
||||
channel_member_ids: [
|
||||
Command.create({ partner_id: serverState.partnerId }),
|
||||
Command.create({ guest_id: guestId }),
|
||||
],
|
||||
channel_type: "livechat",
|
||||
livechat_channel_id: livechatChannelId,
|
||||
livechat_operator_id: serverState.partnerId,
|
||||
create_uid: serverState.publicUserId,
|
||||
});
|
||||
setupChatHub({ opened: [channelId] });
|
||||
await start({
|
||||
authenticateAs: pyEnv["res.users"].search_read([["id", "=", serverState.userId]])[0],
|
||||
});
|
||||
await insertText(".o-mail-Composer-input", "Hello!");
|
||||
await triggerHotkey("Enter");
|
||||
await contains(".o-mail-Message", { text: "Hello!" });
|
||||
await waitForSteps(["/mail/message/post"]);
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue