mail/static/tests/tours/mail_template_dynamic_placeholder_tour.js
Данил Воробьев 6e6f15d803 initial commit
2024-05-03 09:40:35 +00:00

179 lines
6.8 KiB
JavaScript

/* @odoo-module */
import { registry } from "@web/core/registry";
import { contains } from "@web/../tests/utils";
import { stepUtils } from "@web_tour/tour_service/tour_utils";
registry.category("web_tour.tours").add("mail_template_dynamic_placeholder_tour", {
test: true,
url: "/web",
steps: () => [
stepUtils.showAppsMenuItem(),
{
content: 'Go into the Setting "app"',
trigger: '.o_app[data-menu-xmlid="base.menu_administration"]',
},
{
content: "Open email templates",
trigger: 'button[name="open_mail_templates"]',
},
{
content: "Create a new email template",
trigger: "button.o_list_button_add",
},
{
content: 'Insert # inside "Subject" input',
trigger: 'div[name="subject"] input[type="text"]',
async run(actions) {
actions.text(`no_model_id #`, this.$anchor);
this.$anchor[0].dispatchEvent(
new KeyboardEvent("keydown", { bubbles: true, key: "#" })
);
await contains("div[name='subject'] input[type='text']", {
value: "no_model_id #",
});
await contains(".o_notification", {
text: "You need to select a model before opening the dynamic placeholder selector.",
});
},
},
{
content: 'Select "Contact" model',
trigger: 'div[name="model_id"] input[type="text"]',
run: "text Contact",
},
{
content: "Wait for the autocomplete RPC",
trigger: 'div[name="model_id"] .ui-autocomplete:contains("Contact")',
isCheck: true,
},
{
content: "Click on contact",
trigger: 'div[name="model_id"] .ui-autocomplete',
run: async function () {
const contact = Array.from(
document.querySelectorAll(
'div[name="model_id"] .ui-autocomplete .dropdown-item'
)
).find((el) => el.textContent === "Contact");
await contact.click();
},
},
{
content: "Wait for the drop down to disappear",
trigger: 'div[name="model_id"] .o-autocomplete:not(:has(.ui-autocomplete))',
run: async () => {
// Ensure the system has registered a correct model value before
// we try to open the DPH.
// It seems that the autocomplete validation can be very slow.
await new Promise((r) => setTimeout(r, 200));
},
},
{
content: 'Retry insert # inside "Subject" input',
trigger: 'div[name="subject"] input[type="text"]',
run(actions) {
actions.text(`yes_model_id #`, this.$anchor);
this.$anchor[0].dispatchEvent(
new KeyboardEvent("keydown", { bubbles: true, key: "#" })
);
},
},
{
content: "Check if the dynamic placeholder popover is opened",
trigger: "div.o_model_field_selector_popover",
isCheck: true,
},
{
content: "filter the dph result",
trigger: "div.o_model_field_selector_popover_search input[type='text']",
run: "text name",
},
{
content: "Click on the first entry of the dynamic placeholder",
trigger: 'div.o_model_field_selector_popover li:first-child button:contains("Name")',
},
{
content: "Enter a default value",
trigger:
'div.o_model_field_selector_popover .o_model_field_selector_default_value_input input[type="text"]',
run: "text defValue",
},
{
content: "Click on the the dynamic placeholder default value",
trigger: "div.o_model_field_selector_popover li:first-child button",
},
{
content: "Wait for the popover to disappear",
trigger: "body:not(:has(.o_model_field_selector_popover))",
},
{
content: "Check if subject value was correclty updated",
trigger: 'div[name="subject"] input[type="text"]',
run() {
const subjectValue = this.$anchor[0].value;
const correctValue = "yes_model_id {{object.name or '''defValue'''}}";
if (subjectValue !== correctValue) {
console.error(
`Email template should have "${correctValue}" in subject input (actual: ${subjectValue})`
);
}
},
},
{
content: "Insert tesxt inside editable",
trigger: ".note-editable.odoo-editor-editable",
run(actions) {
actions.text(`/`, this.$anchor);
document.querySelector(".note-editable").dispatchEvent(
new InputEvent("input", {
inputType: "insertText",
data: "/",
})
);
},
},
{
content: "Click on the the dynamic placeholder commandBar options",
trigger: "div.oe-powerbox-commandWrapper:contains(Dynamic Placeholder)",
},
{
content: "Check if the dynamic placeholder popover is opened",
trigger: "div.o_model_field_selector_popover",
},
{
content: "filter the dph result",
trigger: "div.o_model_field_selector_popover_search input[type='text']",
run: "text name",
},
{
content: "Click on the first entry of the dynamic placeholder",
trigger: 'div.o_model_field_selector_popover li:first-child button:contains("Name")',
},
{
content: "Enter a default value",
trigger:
'div.o_model_field_selector_popover .o_model_field_selector_default_value_input input[type="text"]',
run: "text defValue",
},
{
content: "Click on the the dynamic placeholder default value",
trigger: "div.o_model_field_selector_popover li:first-child button",
},
{
content: "Ensure the editable contain the dynamic placeholder t tag",
trigger:
".note-editable.odoo-editor-editable t[t-out=\"object.name or '''defValue'''\"]",
},
{
content: "Discard form changes",
trigger: "button.o_form_button_cancel",
},
{
content: "Wait for the form view to disappear",
trigger: "body:not(:has(.o_form_sheet))",
isCheck: true,
},
],
});