website/static/tests/tours/website_form_editor_frontend.js

230 lines
12 KiB
JavaScript
Raw Normal View History

/** @odoo-module **/
import { jsonrpc } from "@web/core/network/rpc_service";
import { registry } from "@web/core/registry";
registry.category("web_tour.tours").add("website_form_editor_tour_submit", {
test: true,
steps: () => [
{
content: "Try to send the form with some required fields not filled in",
extra_trigger: "form[data-model_name='mail.mail']" +
"[data-success-page='/contactus-thank-you']" +
":has(.s_website_form_field:has(label:contains('Your Name')):has(input[type='text'][name='name'][required]))" +
":has(.s_website_form_field:has(label:contains('Your Email')):has(input[type='email'][name='email_from'][required]))" +
":has(.s_website_form_field:has(label:contains('Your Question')):has(textarea[name='description'][required]))" +
":has(.s_website_form_field:has(label:contains('Subject')):has(input[type='text'][name='subject'][required]))" +
":has(.s_website_form_field:has(label:contains('Test Date')):has(input[type='text'][name='date'][required]))" +
":has(.s_website_form_field:has(label:contains('Awesome Label')):hidden)" +
":has(.s_website_form_field:has(label:contains('Your Message')):has(textarea[name='body_html'][required]))" +
":has(.s_website_form_field:has(label:contains('Products')):has(input[type='checkbox'][name='Products'][value='Iphone'][required]))" +
":has(.s_website_form_field:has(label:contains('Products')):has(input[type='checkbox'][name='Products'][value='Galaxy S'][required]))" +
":has(.s_website_form_field:has(label:contains('Products')):has(input[type='checkbox'][name='Products'][value='Xperia'][required]))" +
":has(.s_website_form_field:has(label:contains('Products')):has(input[type='checkbox'][name='Products'][value='Wiko Stairway'][required]))" +
":has(.s_website_form_field:has(label:contains('Service')):has(input[type='radio'][name='Service'][value='After-sales Service']:not([required])))" +
":has(.s_website_form_field:has(label:contains('Service')):has(input[type='radio'][name='Service'][value='Invoicing Service']:not([required])))" +
":has(.s_website_form_field:has(label:contains('Service')):has(input[type='radio'][name='Service'][value='Development Service']:not([required])))" +
":has(.s_website_form_field:has(label:contains('Service')):has(input[type='radio'][name='Service'][value='Management Service']:not([required])))" +
":has(.s_website_form_field:has(label:contains('State')):has(select[name='State'][required]:has(option[value='Belgium'])))" +
":has(.s_website_form_field.s_website_form_required:has(label:contains('State')):has(select[name='State'][required]:has(option[value='France'])))" +
":has(.s_website_form_field:has(label:contains('State')):has(select[name='State'][required]:has(option[value='Canada'])))" +
":has(.s_website_form_field:has(label:contains('Invoice Scan')))" +
":has(.s_website_form_field:has(input[name='email_to'][value='test@test.test']))" +
":has(.s_website_form_field:has(input[name='website_form_signature']))",
trigger: ".s_website_form_send"
},
{
content: "Check if required fields were detected and complete the Subject field",
extra_trigger: "form:has(#s_website_form_result.text-danger)" +
":has(.s_website_form_field:has(label:contains('Your Name')):not(.o_has_error))" +
":has(.s_website_form_field:has(label:contains('Email')).o_has_error)" +
":has(.s_website_form_field:has(label:contains('Your Question')).o_has_error)" +
":has(.s_website_form_field:has(label:contains('Subject')).o_has_error)" +
":has(.s_website_form_field:has(label:contains('Test Date')).o_has_error)" +
":has(.s_website_form_field:has(label:contains('Your Message')).o_has_error)" +
":has(.s_website_form_field:has(label:contains('Products')).o_has_error)" +
":has(.s_website_form_field:has(label:contains('Service')):not(.o_has_error))" +
":has(.s_website_form_field:has(label:contains('State')):not(.o_has_error))" +
":has(.s_website_form_field:has(label:contains('Invoice Scan')):not(.o_has_error))",
trigger: "input[name=subject]",
run: "text Jane Smith"
},
{
content: "Update required field status by trying to Send again",
trigger: ".s_website_form_send"
},
{
content: "Check if required fields were detected and complete the Message field",
extra_trigger: "form:has(#s_website_form_result.text-danger)" +
":has(.s_website_form_field:has(label:contains('Your Name')):not(.o_has_error))" +
":has(.s_website_form_field:has(label:contains('Email')).o_has_error)" +
":has(.s_website_form_field:has(label:contains('Your Question')).o_has_error)" +
":has(.s_website_form_field:has(label:contains('Subject')):not(.o_has_error))" +
":has(.s_website_form_field:has(label:contains('Test Date')).o_has_error)" +
":has(.s_website_form_field:has(label:contains('Your Message')).o_has_error)" +
":has(.s_website_form_field:has(label:contains('Products')).o_has_error)" +
":has(.s_website_form_field:has(label:contains('Service')):not(.o_has_error))" +
":has(.s_website_form_field:has(label:contains('State')):not(.o_has_error))" +
":has(.s_website_form_field:has(label:contains('Invoice Scan')):not(.o_has_error))",
trigger: "textarea[name=body_html]",
run: "text A useless message"
},
{
content: "Update required field status by trying to Send again",
trigger: ".s_website_form_send"
},
{
content: "Check if required fields was detected and check a product. If this fails, you probably broke the cleanForSave.",
extra_trigger: "form:has(#s_website_form_result.text-danger)" +
":has(.s_website_form_field:has(label:contains('Your Name')):not(.o_has_error))" +
":has(.s_website_form_field:has(label:contains('Email')).o_has_error)" +
":has(.s_website_form_field:has(label:contains('Your Question')).o_has_error)" +
":has(.s_website_form_field:has(label:contains('Subject')):not(.o_has_error))" +
":has(.s_website_form_field:has(label:contains('Test Date')).o_has_error)" +
":has(.s_website_form_field:has(label:contains('Your Message')):not(.o_has_error))" +
":has(.s_website_form_field:has(label:contains('Products')).o_has_error)" +
":has(.s_website_form_field:has(label:contains('Service')):not(.o_has_error))" +
":has(.s_website_form_field:has(label:contains('State')):not(.o_has_error))" +
":has(.s_website_form_field:has(label:contains('Invoice Scan')):not(.o_has_error))",
trigger: "input[name=Products][value='Wiko Stairway']"
},
{
content: "Open datetime picker",
trigger: ".s_website_form_datetime input",
run: "click",
},
{
content: "Complete Date field",
trigger: ".o_date_picker .o_today",
},
{
content: "Check another product",
trigger: "input[name='Products'][value='Xperia']"
},
{
content: "Check a service",
trigger: "input[name='Service'][value='Development Service']"
},
{
content: "Complete Your Name field",
trigger: "input[name='name']",
run: "text chhagan"
},
{
content: "Complete Email field",
trigger: "input[name=email_from]",
run: "text test@mail.com"
},
{
content: "Complete Subject field",
trigger: 'input[name="subject"]',
run: 'text subject',
},
{
content: "Complete Your Question field",
trigger: "textarea[name='description']",
run: "text magan"
},
{
content: "Check if conditional field is visible, it shouldn't.",
trigger: "body",
run: function () {
const style = window.getComputedStyle(this.$anchor[0].getElementsByClassName('s_website_form_field_hidden_if')[0]);
if (style.display !== 'none') {
console.error('error This field should be invisible when the name is not odoo');
}
}
},
{
content: "Change name input",
trigger: "input[name='name']",
run: "text odoo",
},
{
content: "Check if conditional field is visible, it should.",
trigger: "input[name='email_cc']",
},
{
content: "Select state option",
trigger: "select[name='State']",
run: 'text 44 - UK',
},
{
content: "Send the form",
trigger: ".s_website_form_send"
},
{
content: "Check form is submitted without errors",
trigger: "#wrap:has(h1:contains('Thank You!'))",
isCheck: true,
}
]});
registry.category("web_tour.tours").add("website_form_editor_tour_results", {
test: true,
steps: () => [
{
content: "Check mail.mail records have been created",
trigger: "body",
run: function () {
var mailDef = jsonrpc(`/web/dataset/call_kw/mail.mail/search_count`, {
model: "mail.mail",
method: "search_count",
args: [[
['email_to', '=', 'test@test.test'],
['body_html', 'like', 'A useless message'],
['body_html', 'like', 'Service : Development Service'],
['body_html', 'like', 'State : 44 - UK'],
['body_html', 'like', 'Products : Xperia,Wiko Stairway']
]],
kwargs: {},
});
var success = function(model, count) {
if (count > 0) {
$('body').append('<div id="website_form_editor_success_test_tour_'+model+'"></div>');
}
};
mailDef.then(success.bind(this, 'mail_mail'));
}
},
{
content: "Check mail.mail records have been created",
trigger: "#website_form_editor_success_test_tour_mail_mail",
allowInvisible: true,
isCheck: true,
}
]});
registry.category("web_tour.tours").add('website_form_contactus_submit', {
test: true,
url: '/contactus',
steps: () => [
// As the demo portal user, only two inputs needs to be filled to send
// the email
{
content: "Fill in the subject",
trigger: 'input[name="subject"]',
},
{
content: 'Fill in the message',
trigger: 'textarea[name="description"]',
},
{
content: 'Send the form',
trigger: '.s_website_form_send',
},
{
content: 'Check form is submitted without errors',
trigger: '#wrap:has(h1:contains("Thank You!"))',
isCheck: true,
},
]});
registry.category("web_tour.tours").add('website_form_contactus_check_changed_email', {
test: true,
url: '/contactus',
steps: () => [
{
content: "Check that the recipient email is updated",
trigger: 'form:has(input[name="email_to"][value="after.change@mail.com"])',
isCheck: true,
},
]});