Skip to content

Commit

Permalink
Merge branch 'pull-27917' into 108_clear-shopping-cart-button-configu…
Browse files Browse the repository at this point in the history
…ration
  • Loading branch information
John Carlo Octabio committed Jun 9, 2020
2 parents e1fa935 + 077a2a5 commit 2c4ee78
Show file tree
Hide file tree
Showing 8 changed files with 185 additions and 15 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->

<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
<actionGroup name="AdminCheckoutClearShoppingCartEnabledActionGroup">
<annotations>
<description>Enable/disable display of clear shopping cart button on the cart page via checkout cart configuration.</description>
</annotations>
<arguments>
<argument name="value" type="string" defaultValue="Yes"/>
</arguments>
<scrollTo selector="{{AdminCheckoutConfigSection.clearShoppingCartEnabled}}" x="0" y="-100" stepKey="scrollToClearShoppingCartEnabled"/>
<uncheckOption selector="{{AdminCheckoutConfigSection.clearShoppingCartEnabledInherit}}" stepKey="uncheckUseSystem"/>
<selectOption selector="{{AdminCheckoutConfigSection.clearShoppingCartEnabled}}" userInput="{{value}}" stepKey="fillClearShoppingCartEnabled"/>
<click selector="{{AdminMainActionsSection.save}}" stepKey="clickSave"/>
<seeElement selector="{{AdminMessagesSection.success}}" stepKey="seeSuccessMessage"/>
</actionGroup>
</actionGroups>
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
<actionGroup name="AdminOpenSalesCheckoutConfigPageActionGroup">
<arguments>
<argument name="tabGroupAnchor" type="string" defaultValue=""/>
</arguments>
<amOnPage url="{{AdminCheckoutConfigPage.url(tabGroupAnchor)}}" stepKey="openCheckoutConfigPage"/>
<waitForPageLoad stepKey="waitForCheckoutConfigPageLoad"/>
</actionGroup>
</actionGroups>

11 changes: 11 additions & 0 deletions app/code/Magento/Checkout/Test/Mftf/Data/ConfigData.xml
Original file line number Diff line number Diff line change
Expand Up @@ -100,4 +100,15 @@
<data key="label">Display number of items in cart</data>
<data key="value">0</data>
</entity>

<entity name="EnableClearShoppingCartButtonOnTheCartPage">
<data key="path">checkout/cart/enable_clear_shopping_cart</data>
<data key="label">Display clear shopping cart button on the cart page</data>
<data key="value">1</data>
</entity>
<entity name="DisableClearShoppingCartButtonOnTheCartPage">
<data key="path">checkout/cart/enable_clear_shopping_cart</data>
<data key="label">Do not display clear shopping cart button on the cart page</data>
<data key="value">0</data>
</entity>
</entities>
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<pages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/PageObject.xsd">
<page name="AdminCheckoutConfigPage" url="admin/system_config/edit/section/checkout/{{tabLink}}" area="admin" parameterized="true" module="Magento_Checkout">
<section name="AdminCheckoutConfigSection"/>
</page>
</pages>
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd">
<section name="AdminCheckoutConfigSection">
<element name="clearShoppingCartEnabled" type="select" selector="#checkout_cart_enable_clear_shopping_cart"/>
<element name="clearShoppingCartEnabledInherit" type="select" selector="#checkout_cart_enable_clear_shopping_cart_inherit"/>
</section>
</sections>
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
<element name="checkoutCartProductPrice" type="text" selector="//td[@class='col price']//span[@class='price']"/>
<element name="checkoutCartSubtotal" type="text" selector="//td[@class='col subtotal']//span[@class='price']"/>
<element name="emptyCart" selector=".cart-empty" type="text"/>
<element name="emptyCartButton" selector="#empty_cart_button" type="button"/>
<!-- Required attention section -->
<element name="removeProductBySku" type="button" selector="//div[contains(., '{{sku}}')]/ancestor::tbody//button" parameterized="true" timeout="30"/>
<element name="failedItemBySku" type="block" selector="//div[contains(.,'{{sku}}')]/ancestor::tbody" parameterized="true" timeout="30"/>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
<test name="StorefrontCheckRenderingClearShoppingCartButtonOnTheCartPageBasedOnStoresConfigurationTest">
<annotations>
<features value="Checkout"/>
<stories value="Shopping Cart"/>
<title value="Check display render of clear shopping cart button on the cart page based on checkout cart stores configuration"/>
<description value="Check display render of clear shopping cart button on the cart page based on checkout cart stores configuration"/>
<severity value="MAJOR"/>
<group value="shoppingCart"/>
</annotations>

<before>
<!-- Create simple product -->
<createData entity="SimpleProduct2" stepKey="createProduct"/>
</before>
<after>
<!-- Delete simple product -->
<deleteData createDataKey="createProduct" stepKey="deleteProduct"/>

<!-- Disable rendering of clear shopping cart button on the cart page -->
<magentoCLI command="config:set {{DisableClearShoppingCartButtonOnTheCartPage.path}} {{DisableClearShoppingCartButtonOnTheCartPage.value}}" stepKey="disableClearShoppingCart"/>

<!-- Log out -->
<actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/>
</after>
<!-- Add product to cart -->
<actionGroup ref="OpenStoreFrontProductPageActionGroup" stepKey="openProductPage">
<argument name="productUrlKey" value="$$createProduct.custom_attributes[url_key]$$"/>
</actionGroup>
<actionGroup ref="StorefrontAddProductToCartActionGroup" stepKey="addProductToCart">
<argument name="product" value="$$createProduct$$"/>
<argument name="productCount" value="1"/>
</actionGroup>

<!-- Navigate to cart page -->
<actionGroup ref="StorefrontOpenCartFromMinicartActionGroup" stepKey="openShoppingCart"/>
<waitForPageLoad stepKey="waitForShoppingCartLoad" />

<!-- Assert that empty cart button is not rendered on the cart page -->
<dontSeeElement selector="{{CheckoutCartProductSection.emptyCartButton}}" stepKey="dontSeeClearShoppingCartButton"/>

<!-- Open new browser's window and login as Admin -->
<openNewTab stepKey="openNewTab"/>
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>

<!-- Navigate to checkout cart configuration -->
<actionGroup ref="AdminOpenSalesCheckoutConfigPageActionGroup" stepKey="openCheckoutCartConfig">
<argument name="tabGroupAnchor" value="#checkout_cart-link"/>
</actionGroup>

<!-- Enable clear shopping cart button -->
<actionGroup ref="AdminCheckoutClearShoppingCartEnabledActionGroup" stepKey="enableClearShoppingCartButton"/>

<!-- Flush cache -->
<magentoCLI command="cache:flush" stepKey="cacheFlush"/>

<!-- Back to the Cart page and refresh the page -->
<switchToPreviousTab stepKey="switchToPreviousTab"/>
<reloadPage stepKey="refreshPage"/>
<waitForPageLoad stepKey="waitPageReload"/>

<!-- Assert that empty cart button is rendered on the cart page -->
<seeElement selector="{{CheckoutCartProductSection.emptyCartButton}}" stepKey="SeeClearShoppingCartButton"/>
</test>
</tests>
48 changes: 33 additions & 15 deletions app/code/Magento/Checkout/view/frontend/web/js/shopping-cart.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,23 +14,10 @@ define([
$.widget('mage.shoppingCart', {
/** @inheritdoc */
_create: function () {
var items, i, reload, self = this;
var items, i, reload;

$(this.options.emptyCartButton).on('click', $.proxy(function () {
confirm({
content: $.mage.__('Are you sure you want to remove all items from your Shopping Cart?'),
actions: {
confirm: function () {
$(self.options.emptyCartButton).attr('name', 'update_cart_action_temp');
$(self.options.updateCartActionContainer)
.attr('name', 'update_cart_action').attr('value', 'empty_cart');

if ($(self.options.emptyCartButton).parents('form').length > 0) {
$(self.options.emptyCartButton).parents('form').submit();
}
}
}
});
this._clearCartConfirmation();
}, this));
items = $.find('[data-role="cart-item-qty"]');

Expand Down Expand Up @@ -70,6 +57,37 @@ define([
$('div.block.block-minicart').off('dropdowndialogclose');
}));
}, this));
},

/**
* Display confirmation modal for clearing the cart
* @private
*/
_clearCartConfirmation: function() {
var self = this;

confirm({
content: $.mage.__('Are you sure you want to remove all items from your shopping cart?'),
actions: {
confirm: function () {
self.clearCart();
}
}
});
},

/**
* Prepares the form and submit to clear the cart
* @public
*/
clearCart: function() {
$(this.options.emptyCartButton).attr('name', 'update_cart_action_temp');
$(this.options.updateCartActionContainer)
.attr('name', 'update_cart_action').attr('value', 'empty_cart');

if ($(this.options.emptyCartButton).parents('form').length > 0) {
$(this.options.emptyCartButton).parents('form').submit();
}
}
});

Expand Down

0 comments on commit 2c4ee78

Please sign in to comment.