186 lines
6.7 KiB
JavaScript
186 lines
6.7 KiB
JavaScript
import {
|
|
assertSteps,
|
|
click,
|
|
contains,
|
|
defineMailModels,
|
|
editInput,
|
|
onRpcBefore,
|
|
openFormView,
|
|
start,
|
|
startServer,
|
|
step,
|
|
} from "@mail/../tests/mail_test_helpers";
|
|
import { describe, expect, test } from "@odoo/hoot";
|
|
import { Deferred } from "@odoo/hoot-mock";
|
|
import { mockService, onRpc } from "@web/../tests/web_test_helpers";
|
|
|
|
describe.current.tags("desktop");
|
|
defineMailModels();
|
|
|
|
test("base rendering not editable", async () => {
|
|
const pyEnv = await startServer();
|
|
const [threadId, partnerId] = pyEnv["res.partner"].create([
|
|
{ hasWriteAccess: false },
|
|
{ hasWriteAccess: false },
|
|
]);
|
|
pyEnv["mail.followers"].create({
|
|
is_active: true,
|
|
partner_id: partnerId,
|
|
res_id: threadId,
|
|
res_model: "res.partner",
|
|
});
|
|
await start();
|
|
await openFormView("res.partner", threadId);
|
|
await click(".o-mail-Followers-button");
|
|
await contains(".o-mail-Follower");
|
|
await contains(".o-mail-Follower-details");
|
|
await contains(".o-mail-Follower-avatar");
|
|
await contains(".o-mail-Follower-action", { count: 0 });
|
|
});
|
|
|
|
test("base rendering editable", async () => {
|
|
const pyEnv = await startServer();
|
|
const [threadId, partnerId] = pyEnv["res.partner"].create([{}, {}]);
|
|
pyEnv["mail.followers"].create({
|
|
is_active: true,
|
|
partner_id: partnerId,
|
|
res_id: threadId,
|
|
res_model: "res.partner",
|
|
});
|
|
await start();
|
|
await openFormView("res.partner", threadId);
|
|
await click(".o-mail-Followers-button");
|
|
await contains(".o-mail-Follower");
|
|
await contains(".o-mail-Follower-details");
|
|
await contains(".o-mail-Follower-avatar");
|
|
await contains(".o-mail-Follower");
|
|
await contains("button[title='Edit subscription']");
|
|
await contains("button[title='Remove this follower']");
|
|
});
|
|
|
|
test("click on partner follower details", async () => {
|
|
const pyEnv = await startServer();
|
|
const [threadId, partnerId] = pyEnv["res.partner"].create([{}, {}]);
|
|
pyEnv["mail.followers"].create({
|
|
is_active: true,
|
|
partner_id: partnerId,
|
|
res_id: threadId,
|
|
res_model: "res.partner",
|
|
});
|
|
const openFormDef = new Deferred();
|
|
mockService("action", {
|
|
doAction(action) {
|
|
if (action?.res_id !== partnerId) {
|
|
return super.doAction(...arguments);
|
|
}
|
|
step("do_action");
|
|
expect(action.res_id).toBe(partnerId);
|
|
expect(action.res_model).toBe("res.partner");
|
|
expect(action.type).toBe("ir.actions.act_window");
|
|
openFormDef.resolve();
|
|
},
|
|
});
|
|
await start();
|
|
await openFormView("res.partner", threadId);
|
|
await click(".o-mail-Followers-button");
|
|
await contains(".o-mail-Follower");
|
|
await contains(".o-mail-Follower-details");
|
|
await click(".o-mail-Follower-details:first");
|
|
await openFormDef;
|
|
await assertSteps(["do_action"]); // redirect to partner profile
|
|
});
|
|
|
|
test("click on edit follower", async () => {
|
|
const pyEnv = await startServer();
|
|
const [threadId, partnerId] = pyEnv["res.partner"].create([{}, {}]);
|
|
pyEnv["mail.followers"].create({
|
|
is_active: true,
|
|
partner_id: partnerId,
|
|
res_id: threadId,
|
|
res_model: "res.partner",
|
|
});
|
|
onRpcBefore("/mail/read_subscription_data", () => step("fetch_subtypes"));
|
|
await start();
|
|
await openFormView("res.partner", threadId);
|
|
await click(".o-mail-Followers-button");
|
|
await contains(".o-mail-Follower");
|
|
await contains("button[title='Edit subscription']");
|
|
await click("button[title='Edit subscription']");
|
|
await contains(".o-mail-Follower", { count: 0 });
|
|
await assertSteps(["fetch_subtypes"]);
|
|
await contains(".o-mail-FollowerSubtypeDialog");
|
|
});
|
|
|
|
test("edit follower and close subtype dialog", async () => {
|
|
const pyEnv = await startServer();
|
|
const [threadId, partnerId] = pyEnv["res.partner"].create([{}, {}]);
|
|
pyEnv["mail.followers"].create({
|
|
is_active: true,
|
|
partner_id: partnerId,
|
|
res_id: threadId,
|
|
res_model: "res.partner",
|
|
});
|
|
onRpcBefore("/mail/read_subscription_data", () => step("fetch_subtypes"));
|
|
await start();
|
|
await openFormView("res.partner", threadId);
|
|
await click(".o-mail-Followers-button");
|
|
await contains(".o-mail-Follower");
|
|
await contains("button[title='Edit subscription']");
|
|
await click("button[title='Edit subscription']");
|
|
await contains(".o-mail-FollowerSubtypeDialog");
|
|
await assertSteps(["fetch_subtypes"]);
|
|
await click(".o-mail-FollowerSubtypeDialog button", { text: "Cancel" });
|
|
await contains(".o-mail-FollowerSubtypeDialog", { count: 0 });
|
|
});
|
|
|
|
test("remove a follower in a dirty form view", async () => {
|
|
const pyEnv = await startServer();
|
|
const [threadId, partnerId] = pyEnv["res.partner"].create([{}, {}]);
|
|
pyEnv["discuss.channel"].create({ name: "General", display_name: "General" });
|
|
pyEnv["mail.followers"].create({
|
|
is_active: true,
|
|
partner_id: partnerId,
|
|
res_id: threadId,
|
|
res_model: "res.partner",
|
|
});
|
|
await start();
|
|
await openFormView("res.partner", threadId, {
|
|
arch: `
|
|
<form>
|
|
<field name="name"/>
|
|
<field name="channel_ids" widget="many2many_tags"/>
|
|
<chatter/>
|
|
</form>`,
|
|
});
|
|
await click(".o_field_many2many_tags[name='channel_ids'] input");
|
|
await click(".dropdown-item", { text: "General" });
|
|
await contains(".o_tag", { text: "General" });
|
|
await contains(".o-mail-Followers-counter", { text: "1" });
|
|
await editInput(document.body, ".o_field_char[name=name] input", "some value");
|
|
await click(".o-mail-Followers-button");
|
|
await click("button[title='Remove this follower']");
|
|
await contains(".o-mail-Followers-counter", { text: "0" });
|
|
await contains(".o_field_char[name=name] input", { value: "some value" });
|
|
await contains(".o_tag", { text: "General" });
|
|
});
|
|
|
|
test("removing a follower should reload form view", async function () {
|
|
const pyEnv = await startServer();
|
|
const [threadId, partnerId] = pyEnv["res.partner"].create([{}, {}]);
|
|
pyEnv["mail.followers"].create({
|
|
is_active: true,
|
|
partner_id: partnerId,
|
|
res_id: threadId,
|
|
res_model: "res.partner",
|
|
});
|
|
onRpc("res.partner", "web_read", ({ args }) => step(`read ${args[0][0]}`));
|
|
await start();
|
|
await openFormView("res.partner", threadId);
|
|
await contains(".o-mail-Followers-button");
|
|
await assertSteps([`read ${threadId}`]);
|
|
await click(".o-mail-Followers-button");
|
|
await click("button[title='Remove this follower']");
|
|
await contains(".o-mail-Followers-counter", { text: "0" });
|
|
await assertSteps([`read ${threadId}`]);
|
|
});
|