Skip to content

Commit 2c4ee78

Browse files
author
John Carlo Octabio
committed
Merge branch 'pull-27917' into 108_clear-shopping-cart-button-configuration
2 parents e1fa935 + 077a2a5 commit 2c4ee78

8 files changed

+185
-15
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
11+
<actionGroup name="AdminCheckoutClearShoppingCartEnabledActionGroup">
12+
<annotations>
13+
<description>Enable/disable display of clear shopping cart button on the cart page via checkout cart configuration.</description>
14+
</annotations>
15+
<arguments>
16+
<argument name="value" type="string" defaultValue="Yes"/>
17+
</arguments>
18+
<scrollTo selector="{{AdminCheckoutConfigSection.clearShoppingCartEnabled}}" x="0" y="-100" stepKey="scrollToClearShoppingCartEnabled"/>
19+
<uncheckOption selector="{{AdminCheckoutConfigSection.clearShoppingCartEnabledInherit}}" stepKey="uncheckUseSystem"/>
20+
<selectOption selector="{{AdminCheckoutConfigSection.clearShoppingCartEnabled}}" userInput="{{value}}" stepKey="fillClearShoppingCartEnabled"/>
21+
<click selector="{{AdminMainActionsSection.save}}" stepKey="clickSave"/>
22+
<seeElement selector="{{AdminMessagesSection.success}}" stepKey="seeSuccessMessage"/>
23+
</actionGroup>
24+
</actionGroups>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
10+
<actionGroup name="AdminOpenSalesCheckoutConfigPageActionGroup">
11+
<arguments>
12+
<argument name="tabGroupAnchor" type="string" defaultValue=""/>
13+
</arguments>
14+
<amOnPage url="{{AdminCheckoutConfigPage.url(tabGroupAnchor)}}" stepKey="openCheckoutConfigPage"/>
15+
<waitForPageLoad stepKey="waitForCheckoutConfigPageLoad"/>
16+
</actionGroup>
17+
</actionGroups>
18+

app/code/Magento/Checkout/Test/Mftf/Data/ConfigData.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,4 +100,15 @@
100100
<data key="label">Display number of items in cart</data>
101101
<data key="value">0</data>
102102
</entity>
103+
104+
<entity name="EnableClearShoppingCartButtonOnTheCartPage">
105+
<data key="path">checkout/cart/enable_clear_shopping_cart</data>
106+
<data key="label">Display clear shopping cart button on the cart page</data>
107+
<data key="value">1</data>
108+
</entity>
109+
<entity name="DisableClearShoppingCartButtonOnTheCartPage">
110+
<data key="path">checkout/cart/enable_clear_shopping_cart</data>
111+
<data key="label">Do not display clear shopping cart button on the cart page</data>
112+
<data key="value">0</data>
113+
</entity>
103114
</entities>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<pages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/PageObject.xsd">
9+
<page name="AdminCheckoutConfigPage" url="admin/system_config/edit/section/checkout/{{tabLink}}" area="admin" parameterized="true" module="Magento_Checkout">
10+
<section name="AdminCheckoutConfigSection"/>
11+
</page>
12+
</pages>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd">
9+
<section name="AdminCheckoutConfigSection">
10+
<element name="clearShoppingCartEnabled" type="select" selector="#checkout_cart_enable_clear_shopping_cart"/>
11+
<element name="clearShoppingCartEnabledInherit" type="select" selector="#checkout_cart_enable_clear_shopping_cart_inherit"/>
12+
</section>
13+
</sections>

app/code/Magento/Checkout/Test/Mftf/Section/CheckoutCartProductSection.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
<element name="checkoutCartProductPrice" type="text" selector="//td[@class='col price']//span[@class='price']"/>
4949
<element name="checkoutCartSubtotal" type="text" selector="//td[@class='col subtotal']//span[@class='price']"/>
5050
<element name="emptyCart" selector=".cart-empty" type="text"/>
51+
<element name="emptyCartButton" selector="#empty_cart_button" type="button"/>
5152
<!-- Required attention section -->
5253
<element name="removeProductBySku" type="button" selector="//div[contains(., '{{sku}}')]/ancestor::tbody//button" parameterized="true" timeout="30"/>
5354
<element name="failedItemBySku" type="block" selector="//div[contains(.,'{{sku}}')]/ancestor::tbody" parameterized="true" timeout="30"/>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
10+
<test name="StorefrontCheckRenderingClearShoppingCartButtonOnTheCartPageBasedOnStoresConfigurationTest">
11+
<annotations>
12+
<features value="Checkout"/>
13+
<stories value="Shopping Cart"/>
14+
<title value="Check display render of clear shopping cart button on the cart page based on checkout cart stores configuration"/>
15+
<description value="Check display render of clear shopping cart button on the cart page based on checkout cart stores configuration"/>
16+
<severity value="MAJOR"/>
17+
<group value="shoppingCart"/>
18+
</annotations>
19+
20+
<before>
21+
<!-- Create simple product -->
22+
<createData entity="SimpleProduct2" stepKey="createProduct"/>
23+
</before>
24+
<after>
25+
<!-- Delete simple product -->
26+
<deleteData createDataKey="createProduct" stepKey="deleteProduct"/>
27+
28+
<!-- Disable rendering of clear shopping cart button on the cart page -->
29+
<magentoCLI command="config:set {{DisableClearShoppingCartButtonOnTheCartPage.path}} {{DisableClearShoppingCartButtonOnTheCartPage.value}}" stepKey="disableClearShoppingCart"/>
30+
31+
<!-- Log out -->
32+
<actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/>
33+
</after>
34+
<!-- Add product to cart -->
35+
<actionGroup ref="OpenStoreFrontProductPageActionGroup" stepKey="openProductPage">
36+
<argument name="productUrlKey" value="$$createProduct.custom_attributes[url_key]$$"/>
37+
</actionGroup>
38+
<actionGroup ref="StorefrontAddProductToCartActionGroup" stepKey="addProductToCart">
39+
<argument name="product" value="$$createProduct$$"/>
40+
<argument name="productCount" value="1"/>
41+
</actionGroup>
42+
43+
<!-- Navigate to cart page -->
44+
<actionGroup ref="StorefrontOpenCartFromMinicartActionGroup" stepKey="openShoppingCart"/>
45+
<waitForPageLoad stepKey="waitForShoppingCartLoad" />
46+
47+
<!-- Assert that empty cart button is not rendered on the cart page -->
48+
<dontSeeElement selector="{{CheckoutCartProductSection.emptyCartButton}}" stepKey="dontSeeClearShoppingCartButton"/>
49+
50+
<!-- Open new browser's window and login as Admin -->
51+
<openNewTab stepKey="openNewTab"/>
52+
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
53+
54+
<!-- Navigate to checkout cart configuration -->
55+
<actionGroup ref="AdminOpenSalesCheckoutConfigPageActionGroup" stepKey="openCheckoutCartConfig">
56+
<argument name="tabGroupAnchor" value="#checkout_cart-link"/>
57+
</actionGroup>
58+
59+
<!-- Enable clear shopping cart button -->
60+
<actionGroup ref="AdminCheckoutClearShoppingCartEnabledActionGroup" stepKey="enableClearShoppingCartButton"/>
61+
62+
<!-- Flush cache -->
63+
<magentoCLI command="cache:flush" stepKey="cacheFlush"/>
64+
65+
<!-- Back to the Cart page and refresh the page -->
66+
<switchToPreviousTab stepKey="switchToPreviousTab"/>
67+
<reloadPage stepKey="refreshPage"/>
68+
<waitForPageLoad stepKey="waitPageReload"/>
69+
70+
<!-- Assert that empty cart button is rendered on the cart page -->
71+
<seeElement selector="{{CheckoutCartProductSection.emptyCartButton}}" stepKey="SeeClearShoppingCartButton"/>
72+
</test>
73+
</tests>

app/code/Magento/Checkout/view/frontend/web/js/shopping-cart.js

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,10 @@ define([
1414
$.widget('mage.shoppingCart', {
1515
/** @inheritdoc */
1616
_create: function () {
17-
var items, i, reload, self = this;
17+
var items, i, reload;
1818

1919
$(this.options.emptyCartButton).on('click', $.proxy(function () {
20-
confirm({
21-
content: $.mage.__('Are you sure you want to remove all items from your Shopping Cart?'),
22-
actions: {
23-
confirm: function () {
24-
$(self.options.emptyCartButton).attr('name', 'update_cart_action_temp');
25-
$(self.options.updateCartActionContainer)
26-
.attr('name', 'update_cart_action').attr('value', 'empty_cart');
27-
28-
if ($(self.options.emptyCartButton).parents('form').length > 0) {
29-
$(self.options.emptyCartButton).parents('form').submit();
30-
}
31-
}
32-
}
33-
});
20+
this._clearCartConfirmation();
3421
}, this));
3522
items = $.find('[data-role="cart-item-qty"]');
3623

@@ -70,6 +57,37 @@ define([
7057
$('div.block.block-minicart').off('dropdowndialogclose');
7158
}));
7259
}, this));
60+
},
61+
62+
/**
63+
* Display confirmation modal for clearing the cart
64+
* @private
65+
*/
66+
_clearCartConfirmation: function() {
67+
var self = this;
68+
69+
confirm({
70+
content: $.mage.__('Are you sure you want to remove all items from your shopping cart?'),
71+
actions: {
72+
confirm: function () {
73+
self.clearCart();
74+
}
75+
}
76+
});
77+
},
78+
79+
/**
80+
* Prepares the form and submit to clear the cart
81+
* @public
82+
*/
83+
clearCart: function() {
84+
$(this.options.emptyCartButton).attr('name', 'update_cart_action_temp');
85+
$(this.options.updateCartActionContainer)
86+
.attr('name', 'update_cart_action').attr('value', 'empty_cart');
87+
88+
if ($(this.options.emptyCartButton).parents('form').length > 0) {
89+
$(this.options.emptyCartButton).parents('form').submit();
90+
}
7391
}
7492
});
7593

0 commit comments

Comments
 (0)