[IMP] website_sale: adapt tests to the new customize options

*: website_sale_autocomplete, website_sale_loyalty

Adapt tests to the new customization options which are now accessible in
edit mode with the other options. But also adapt the tests that run in
the backend where the page is now moved in an iframe in edit mode.

See merge commit for more information.

task-2710582
This commit is contained in:
Benjamin Vray
2022-06-24 10:28:07 +02:00
committed by qsm-odoo
parent 9d1f3b1d9b
commit a3dd4e34bd
10 changed files with 288 additions and 220 deletions
@@ -5,10 +5,10 @@ odoo.define("website_sale.tour_utils", function (require) {
const _t = core._t;
function goToCart(quantity = 1, position = "bottom") {
function goToCart({quantity = 1, position = "bottom", backend = false} = {}) {
return {
content: _t("Go to cart"),
trigger: `a:has(.my_cart_quantity:containsExact(${quantity}))`,
trigger: `${backend ? "iframe" : ""} a:has(.my_cart_quantity:containsExact(${quantity}))`,
position: position,
run: "click",
};
@@ -27,7 +27,7 @@ odoo.define('website_sale_tour.tour', function (require) {
content: "Click on add to cart",
trigger: '#add_to_cart',
},
tourUtils.goToCart(2),
tourUtils.goToCart({quantity: 2}),
{
content: "Check for 2 products in cart and proceed to checkout",
extra_trigger: '#cart_products tr:contains("Storage Box Test") input.js_quantity:propValue(2)',
@@ -222,7 +222,7 @@ odoo.define('website_sale_tour.tour', function (require) {
content: "Click on add to cart",
trigger: '#add_to_cart',
},
tourUtils.goToCart(2),
tourUtils.goToCart({quantity: 2}),
{
content: "Check for 2 products in cart and proceed to checkout",
extra_trigger: '#cart_products tr:contains("Storage Box Test") input.js_quantity:propValue(2)',
@@ -22,7 +22,7 @@ odoo.define("website_sale.tour_shop_custom_attribute_value", function (require)
trigger: 'a:contains(ADD TO CART)',
run: 'click',
},
tourUtils.goToCart(),
tourUtils.goToCart(),
{
trigger: 'span:contains(Custom TEST: Wood)',
extra_trigger: '#cart_products',
@@ -1,147 +1,220 @@
odoo.define('website_sale.tour_shop_customize', function (require) {
'use strict';
/** @odoo-module **/
var tour = require("web_tour.tour");
const tourUtils = require('website_sale.tour_utils');
import tour from 'web_tour.tour';
import tourUtils from 'website_sale.tour_utils';
tour.register('shop_customize', {
test: true,
url: '/shop',
},
[
{
content: "open customize menu",
trigger: '#customize-menu > a',
},
{
content: "click on 'Attributes & Variants filters'",
trigger: "#customize-menu label:contains(Attributes & Variants filters)",
},
{
content: "select product attribute Steel",
extra_trigger: 'body:not(:has(#customize-menu:visible .dropdown-menu:visible))',
trigger: 'form.js_attributes input:not(:checked) + label:contains(Steel - Test)',
},
{
content: "check the selection",
trigger: 'form.js_attributes input:checked + label:contains(Steel - Test)',
run: function () {}, // it's a check
},
{
content: "select product",
extra_trigger: 'body:not(:has(.oe_website_sale .oe_product_cart:eq(3)))',
trigger: '.oe_product_cart a:contains("Test Product")',
},
{
content: "open customize menu",
trigger: '#customize-menu > a',
extra_trigger: '#product_detail',
},
{
content: "check page loaded after enable variant group",
trigger: '#customize-menu label:contains(List View of Variants)',
run: function () {}, // it's a check
},
{
content: "check list view of variants is disabled initially",
trigger: 'body:not(:has(.js_product_change))',
run: function () {},
},
{
content: "click on 'List View of Variants'",
trigger: "#customize-menu label:contains(List View of Variants)",
},
{
content: "check page loaded after list of variant customization enabled",
trigger: '.js_product_change',
run: function () {}, // it's a check
},
{
context: "check variant price",
trigger: '.custom-radio:contains("Aluminium") .badge:contains("+") .oe_currency_value:contains("50.4")',
run: function () {},
},
{
content: "check price is 750",
trigger: ".product_price .oe_price .oe_currency_value:containsExact(750.00)",
run: function () {},
},
{
content: "switch to another variant",
trigger: ".js_product label:contains('Aluminium')",
},
{
content: "verify that price has changed when changing variant",
trigger: ".product_price .oe_price .oe_currency_value:containsExact(800.40)",
run: function () {},
},
{
content: "open customize menu",
trigger: '#customize-menu > a',
},
{
content: "remove 'List View of Variants'",
trigger: "#customize-menu label:contains(List View of Variants):has(input:checked)",
},
{
content: "check page loaded after list of variant customization disabled",
trigger: ".js_product:not(:has(.js_product_change))",
run: function () {}, // it's a check
},
{
content: "check price is 750",
trigger: ".product_price .oe_price .oe_currency_value:containsExact(750.00)",
run: function () {},
},
{
content: "switch to Aluminium variant",
trigger: '.js_product input[data-value_name="Aluminium"]',
},
{
content: "verify that price has changed when changing variant",
trigger: ".product_price .oe_price .oe_currency_value:containsExact(800.40)",
run: function () {}, // it's a check
},
{
content: "switch back to Steel variant",
trigger: ".js_product label:contains('Steel - Test')",
},
{
content: "check price is 750",
trigger: ".product_price .oe_price .oe_currency_value:containsExact(750.00)",
run: function () {},
},
{
content: "click on 'Add to Cart' button",
trigger: "a:contains(ADD TO CART)",
},
{
content: "check quantity",
trigger: '.my_cart_quantity:containsExact(1),.o_extra_menu_items .fa-plus',
run: function () {}, // it's a check
},
tourUtils.goToCart(),
{
content: "click on shop",
trigger: "a:contains(Continue Shopping)",
extra_trigger: 'body:not(:has(#products_grid_before .js_attributes))',
},
{
content: "open customize menu bis",
extra_trigger: '#products_grid_before .js_attributes',
trigger: '#customize-menu > a',
},
{
content: "remove 'Attributes & Variants filters'",
trigger: "#customize-menu label:contains(Attributes & Variants filters):has(input:checked)",
},
{
content: "finish",
extra_trigger: 'body:not(:has(#products_grid_before .js_attributes))',
trigger: '#wrap:not(:has(li:has(.my_cart_quantity):visible))',
run: function () {}, // it's a check
},
]
);
});
tour.register('shop_customize', {
test: true,
url: '/shop?enable_editor=1',
},
[
{
content: "open customize tab",
extra_trigger: '#oe_snippets.o_loaded',
trigger: '.o_we_customize_snippet_btn',
},
{
content: "click on 'Attributes'",
extra_trigger: '#oe_snippets .o_we_customize_panel',
trigger: 'we-button[data-name="attributes_opt"]',
},
{
content: "check that the iframe is reloading",
trigger: '.o_loading_dummy',
run: () => {}, // It's a check.
},
{
content: "click on save button after the reload",
trigger: 'div:not(.o_loading_dummy) > #oe_snippets button[data-action="save"]',
run: 'click',
},
{
content: "wait to exit edit mode",
trigger: '.o_website_editor:not(.editor_has_snippets)',
},
{
content: "select product attribute Steel",
trigger: 'iframe form.js_attributes input:not(:checked) + label:contains(Steel - Test)',
},
{
content: "check the selection",
trigger: 'iframe form.js_attributes input:checked + label:contains(Steel - Test)',
run: function () {}, // it's a check
},
{
content: "select product",
extra_trigger: 'iframe body:not(:has(.oe_website_sale .oe_product_cart:eq(3)))',
trigger: 'iframe .oe_product_cart a:contains("Test Product")',
},
{
content: "wait the product page to be loaded",
trigger: 'iframe #product_detail',
run: function () {},
},
{
content: "check list view of variants is disabled initially",
trigger: 'iframe body:not(:has(.js_product_change))',
run: function () {},
},
{
content: "enter edit mode",
trigger: '.o_edit_website_container > a',
},
{
content: "open customize tab",
extra_trigger: '#oe_snippets.o_loaded',
trigger: '.o_we_customize_snippet_btn',
},
{
content: "open 'Variants' selector",
extra_trigger: '#oe_snippets .o_we_customize_panel',
trigger: '[data-name="variants_opt"] we-toggler',
},
{
content: "click on 'Products List' of the 'Variants' selector",
trigger: 'we-button[data-name="variants_products_list_opt"]',
},
{
content: "check that the iframe is reloading",
trigger: '.o_loading_dummy',
run: () => {}, // It's a check.
},
{
content: "click on save button after the reload",
trigger: 'div:not(.o_loading_dummy) > #oe_snippets button[data-action="save"]',
run: 'click',
},
{
content: "wait to exit edit mode",
trigger: '.o_website_editor:not(.editor_has_snippets)',
},
{
context: "check variant price",
trigger: 'iframe .custom-radio:contains("Aluminium") .badge:contains("+") .oe_currency_value:contains("50.4")',
run: function () {},
},
{
content: "check price is 750",
trigger: "iframe .product_price .oe_price .oe_currency_value:containsExact(750.00)",
run: function () {},
},
{
content: "switch to another variant",
trigger: "iframe .js_product label:contains('Aluminium')",
},
{
content: "verify that price has changed when changing variant",
trigger: "iframe .product_price .oe_price .oe_currency_value:containsExact(800.40)",
run: function () {},
},
{
content: "enter edit mode",
trigger: '.o_edit_website_container > a',
},
{
content: "open customize tab",
extra_trigger: '#oe_snippets.o_loaded',
trigger: '.o_we_customize_snippet_btn',
},
{
content: "open 'Variants' selector",
extra_trigger: '#oe_snippets .o_we_customize_panel',
trigger: '[data-name="variants_opt"] we-toggler',
},
{
content: "click on 'Options' of the 'Variants' selector",
trigger: 'we-button[data-name="variants_options_opt"]',
},
{
content: "check that the iframe is reloading",
trigger: '.o_loading_dummy',
run: () => {}, // It's a check.
},
{
content: "click on save button after the reload",
trigger: 'div:not(.o_loading_dummy) > #oe_snippets button[data-action="save"]',
run: 'click',
},
{
content: "wait to exit edit mode",
trigger: '.o_website_editor:not(.editor_has_snippets)',
},
{
content: "check page loaded after list of variant customization disabled",
trigger: "iframe .js_product:not(:has(.js_product_change))",
run: function () {}, // it's a check
},
{
content: "check price is 750",
trigger: "iframe .product_price .oe_price .oe_currency_value:containsExact(750.00)",
run: function () {},
},
{
content: "switch to Aluminium variant",
trigger: 'iframe .js_product input[data-value_name="Aluminium"]',
},
{
content: "verify that price has changed when changing variant",
trigger: "iframe .product_price .oe_price .oe_currency_value:containsExact(800.40)",
run: function () {}, // it's a check
},
{
content: "switch back to Steel variant",
trigger: "iframe .js_product label:contains('Steel - Test')",
},
{
content: "check price is 750",
trigger: "iframe .product_price .oe_price .oe_currency_value:containsExact(750.00)",
run: function () {},
},
{
content: "click on 'Add to Cart' button",
trigger: "iframe a:contains(ADD TO CART)",
},
{
content: "check quantity",
trigger: 'iframe .my_cart_quantity:containsExact(1),.o_extra_menu_items .fa-plus',
run: function () {}, // it's a check
},
tourUtils.goToCart({backend: true}),
{
content: "click on shop",
trigger: "iframe a:contains(Continue Shopping)",
extra_trigger: 'iframe body:not(:has(#products_grid_before .js_attributes))',
},
{
content: "enter edit mode",
trigger: '.o_edit_website_container > a',
},
{
content: "open customize tab",
extra_trigger: '#oe_snippets.o_loaded',
trigger: '.o_we_customize_snippet_btn',
},
{
content: "remove 'Attributes'",
extra_trigger: '#oe_snippets .o_we_customize_panel',
trigger: 'we-button[data-name="attributes_opt"]',
},
{
content: "check that the iframe is reloading",
trigger: '.o_loading_dummy',
run: () => {}, // It's a check.
},
{
content: "click on save button after the reload",
trigger: 'div:not(.o_loading_dummy) > #oe_snippets button[data-action="save"]',
run: 'click',
},
{
content: "wait to exit edit mode",
trigger: '.o_website_editor:not(.editor_has_snippets)',
},
{
content: "finish",
extra_trigger: 'iframe body:not(:has(#products_grid_before .js_attributes))',
trigger: 'iframe #wrap:not(:has(li:has(.my_cart_quantity):visible))',
run: function () {}, // it's a check
},
],
);
@@ -1,8 +1,7 @@
odoo.define('website_sale.tour_shop_list_view_b2c', function (require) {
'use strict';
/** @odoo-module **/
var tour = require('web_tour.tour');
const tourUtils = require('website_sale.tour_utils');
import tour from 'web_tour.tour';
import tourUtils from 'website_sale.tour_utils';
tour.register('shop_list_view_b2c', {
test: true,
@@ -12,62 +11,83 @@ tour.register('shop_list_view_b2c', {
{
content: "check price on /shop",
trigger: '.oe_product_cart .oe_currency_value:contains("825.00")',
run: function () {},
run: () => {}, // It's a check.
},
{
content: "select product",
trigger: '.oe_product_cart a:contains("Test Product")',
},
{
content: "check list view of variants is disabled initially (when on /product page)",
content: "check products list is disabled initially (when on /product page)",
trigger: 'body:not(:has(.js_product_change))',
extra_trigger: '#product_details',
run: function () {},
run: () => {}, // It's a check.
},
{
content: "open customize menu",
trigger: '#customize-menu > a',
extra_trigger: 'body:not(.notReady)',
content: "go to edit mode",
trigger: 'a.o_frontend_to_backend_edit_btn',
},
{
content: "click on 'List View of Variants'",
trigger: '#customize-menu label:contains(List View of Variants)',
content: "open customize tab",
extra_trigger: '#oe_snippets.o_loaded',
trigger: '.o_we_customize_snippet_btn',
},
{
content: "check page loaded after list of variant customization enabled",
trigger: '.js_product_change',
run: function () {},
content: "open 'Variants' selector",
extra_trigger: '#oe_snippets .o_we_customize_panel',
trigger: '[data-name="variants_opt"] we-toggler',
},
{
content: "click on 'Products List' of the 'Variants' selector",
trigger: 'we-button[data-name="variants_products_list_opt"]',
},
{
content: "check that the iframe is reloading",
trigger: '.o_loading_dummy',
run: () => {}, // It's a check.
},
{
content: "click on save button after the reload",
trigger: 'div:not(.o_loading_dummy) > #oe_snippets button[data-action="save"]',
run: 'click',
},
{
content: "wait to exit edit mode",
trigger: '.o_website_editor:not(.editor_has_snippets)',
},
{
content: "check page loaded after 'Products List' enabled",
trigger: 'iframe .js_product_change',
run: () => {}, // It's a check.
},
{
context: "check variant price",
trigger: '.custom-radio:contains("Aluminium") .badge:contains("+") .oe_currency_value:contains("55.44")',
run: function () {},
trigger: 'iframe .custom-radio:contains("Aluminium") .badge:contains("+") .oe_currency_value:contains("55.44")',
run: () => {}, // It's a check.
},
{
content: "check price is 825",
trigger: '.product_price .oe_price .oe_currency_value:containsExact("825.00")',
run: function () {},
trigger: 'iframe .product_price .oe_price .oe_currency_value:containsExact(825.00)',
run: () => {}, // It's a check.
},
{
content: "switch to another variant",
trigger: '.js_product label:contains("Aluminium")',
trigger: 'iframe .js_product label:contains("Aluminium")',
},
{
content: "verify that price has changed when changing variant",
trigger: '.product_price .oe_price .oe_currency_value:containsExact("880.44")',
run: function () {},
trigger: 'iframe .product_price .oe_price .oe_currency_value:containsExact(880.44)',
run: () => {}, // It's a check.
},
{
content: "click on 'Add to Cart' button",
trigger: 'a:contains(ADD TO CART)',
trigger: 'iframe a:contains(ADD TO CART)',
},
tourUtils.goToCart(),
tourUtils.goToCart({backend: true}),
{
content: "check price on /cart",
trigger: '#cart_products .oe_currency_value:containsExact("880.44")',
run: function () {},
trigger: 'iframe #cart_products .oe_currency_value:containsExact(880.44)',
run: () => {}, // It's a check.
},
]
],
);
});
@@ -221,9 +221,9 @@
data-customize-website-views="website_sale.product_quantity"
data-no-preview="true"
data-reload="/"/>
<we-select groups="product.group_product_variant" string="Variants" data-no-preview="true" data-reload="/">
<we-button data-customize-website-views="">Options</we-button>
<we-button data-customize-website-views="website_sale.product_variants">Products List</we-button>
<we-select data-name="variants_opt" groups="product.group_product_variant" string="Variants" data-no-preview="true" data-reload="/">
<we-button data-name="variants_options_opt" data-customize-website-views="">Options</we-button>
<we-button data-name="variants_products_list_opt" data-customize-website-views="website_sale.product_variants">Products List</we-button>
</we-select>
<we-row string="Cart" class="o_we_full_row">
<we-button title="Buy Now" class="fa fa-fw fa-bolt o_we_buy_now_btn"
@@ -22,7 +22,7 @@ tour.register('autocomplete_tour', {
content: 'Add to cart',
trigger: '#add_to_cart'
},
tourUtils.goToCart(1),
tourUtils.goToCart(),
{
content: 'Go to process checkout',
trigger: 'a:contains("Process Checkout")'
@@ -18,34 +18,22 @@ tour.register('shop_sale_gift_card', {
content: 'Add Small Drawer into cart',
trigger: 'a:contains(ADD TO CART)',
},
tourUtils.goToCart(1),
tourUtils.goToCart(),
{
content: 'open customize menu',
extra_trigger: '.oe_website_sale .oe_cart',
trigger: '#customize-menu > a',
},
{
content: 'enable "Promo Code" if needed',
trigger: '#customize-menu label:contains(Promo Code)',
run: function () {
if (!$('#customize-menu label:contains(Promo Code) input').prop('checked')) {
$('#customize-menu label:contains(Promo Code)').click();
}
}
content: "wait the /cart page",
trigger: '#cart_products',
},
{
content: 'Click on "I have a promo code"',
extra_trigger: '.show_coupon',
trigger: '.show_coupon',
},
{
content: 'insert gift card code',
extra_trigger: 'form[name="coupon_code"]',
trigger: 'form[name="coupon_code"] input[name="promo"]',
run: 'text GIFT_CARD'
},
{
content: 'validate the git card',
content: 'validate the gift card',
trigger: 'form[name="coupon_code"] .a-submit',
},
{
@@ -54,7 +42,6 @@ tour.register('shop_sale_gift_card', {
},
{
content: 'Click on "I have a promo code"',
extra_trigger: '.show_coupon',
trigger: '.show_coupon',
},
{
@@ -64,13 +51,13 @@ tour.register('shop_sale_gift_card', {
run: 'text 10PERCENT'
},
{
content: 'validate the git card',
content: 'validate the gift card',
trigger: 'form[name="coupon_code"] .a-submit',
},
{
content: 'check gift card amount',
trigger: '.oe_currency_value:contains("-45.00")',
trigger: '.oe_website_sale .oe_cart',
extra_trigger: '.oe_website_sale .oe_cart',
run: function () {}, // it's a check
},
{
@@ -95,11 +82,11 @@ tour.register('shop_sale_gift_card', {
content: "click on 'Add to Cart' button",
trigger: "a:contains(ADD TO CART)",
},
tourUtils.goToCart(2),
tourUtils.goToCart({quantity: 2}),
{
content: 'check gift card amount',
trigger: '.oe_currency_value:contains("-45.00")',
trigger: '.oe_website_sale .oe_cart',
extra_trigger: '.oe_website_sale .oe_cart',
run: function () {}, // it's a check
},
],
@@ -24,21 +24,7 @@ tour.register('shop_sale_loyalty', {
content: "click on 'Add to Cart' button",
trigger: "a:contains(ADD TO CART)",
},
tourUtils.goToCart(2),
{
content: "open customize menu",
extra_trigger: '.oe_website_sale .oe_cart',
trigger: '#customize-menu > a',
},
{
content: "enable 'Promo Code' if needed",
trigger: "#customize-menu label:contains(Promo Code)",
run: function () {
if (!$('#customize-menu label:contains(Promo Code) input').prop('checked')) {
$('#customize-menu label:contains(Promo Code)').click();
}
}
},
tourUtils.goToCart({quantity: 2}),
{
content: "click on 'I have a promo code'",
extra_trigger: '.show_coupon',
@@ -107,7 +93,7 @@ tour.register('shop_sale_loyalty', {
content: "click on 'Add to Cart' button",
trigger: "a:contains(ADD TO CART)",
},
tourUtils.goToCart(3),
tourUtils.goToCart({quantity: 3}),
{
content: "check reduction amount got recomputed and merged both discount lines into one only",
extra_trigger: '.oe_currency_value:contains("-75.50"):not(#cart_total .oe_currency_value:contains("-75.50"))',
@@ -90,6 +90,7 @@ class TestUi(TestSaleProductAttributeValueCommon, HttpCase):
})],
})
self.env.ref("website_sale.reduction_code").write({"active": True})
self.start_tour("/", 'shop_sale_loyalty', login="admin")
def test_02_admin_shop_gift_card_tour(self):
@@ -161,6 +162,7 @@ class TestUi(TestSaleProductAttributeValueCommon, HttpCase):
'code': 'GIFT_CARD',
})
self.env.ref("website_sale.reduction_code").write({"active": True})
self.start_tour('/', 'shop_sale_gift_card', login='admin')
self.assertEqual(len(gift_card_program.coupon_ids), 2, 'There should be two coupons, one with points, one without')