Skip to content

Commit 1c31d4f

Browse files
committed
Merge branch 'ACP2E-227' of https://github.com/magento-l3/magento2ce into L3-PR-20211001
2 parents 6c10f7a + 6af6ee7 commit 1c31d4f

File tree

2 files changed

+77
-2
lines changed

2 files changed

+77
-2
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
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+
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
11+
<test name="StorefrontAddressDeletedStreetAddressRemainsEmptyAfterRefreshTest">
12+
<annotations>
13+
<features value="Checkout"/>
14+
<stories value="Guest checkout"/>
15+
<title value="Address Street Field Remain Empty when deleted even After Browser Refresh"/>
16+
<description value="Address Street Field Remain Empty when deleted even After Browser Refresh"/>
17+
<severity value="MINOR"/>
18+
<testCaseId value="MC-43255"/>
19+
<group value="checkout"/>
20+
</annotations>
21+
<before>
22+
<createData entity="simpleProductWithoutCategory" stepKey="createSimpleProduct"/>
23+
</before>
24+
<after>
25+
<deleteData createDataKey="createSimpleProduct" stepKey="deleteProduct"/>
26+
</after>
27+
<!--Step 1 Add simple product to the cart -->
28+
<actionGroup ref="StorefrontAddSimpleProductToShoppingCartActionGroup" stepKey="addProductToCart">
29+
<argument name="product" value="$createSimpleProduct$"/>
30+
</actionGroup>
31+
32+
<!--Step 2 Proceed to Checkout and be on Shipping page -->
33+
<actionGroup ref="GoToCheckoutFromMinicartActionGroup" stepKey="goToCheckout"/>
34+
35+
<!--Step 3 Select Country as United Kingdom, select address street and Refresh the page-->
36+
<selectOption selector="{{CheckoutShippingSection.country}}" userInput="{{UK_Address.country_id}}" stepKey="selectUnitedKingdomCounty"/>
37+
<waitForPageLoad stepKey="waitFormToReloadAfterSelectCountry"/>
38+
<fillField selector="{{CheckoutShippingSection.street}}" userInput="{{UK_Address.street[0]}}" stepKey="enterAddressStreet"/>
39+
<actionGroup ref="ReloadPageActionGroup" stepKey="refreshPageAfterAddressIsAdded"/>
40+
<!-- Step 4 Assert Entered details should be retained and delete an address -->
41+
<seeInField selector="{{CheckoutShippingSection.street}}" userInput="{{UK_Address.street[0]}}" stepKey="seeAddressStreetUnitedKingdom"/>
42+
<clearField selector="{{CheckoutShippingSection.street}}" stepKey="deleteAddressStreet"/>
43+
<!-- Assert Entered details should be retained and State/Province field should be displayed as an optional field (without * ) -->
44+
<actionGroup ref="ReloadPageActionGroup" stepKey="refreshPageAfterAddressIsDeleted"/>
45+
<seeInField selector="{{CheckoutShippingSection.street}}" userInput="" stepKey="seeAddressStreetIsempty"/>
46+
</test>
47+
</tests>

app/code/Magento/Checkout/view/frontend/web/js/view/shipping.js

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,36 @@ define([
120120
$.extend(true, {}, checkoutProvider.get('shippingAddress'), shippingAddressData)
121121
);
122122
}
123-
checkoutProvider.on('shippingAddress', function (shippingAddrsData) {
124-
if (shippingAddrsData.street && !_.isEmpty(shippingAddrsData.street[0])) {
123+
checkoutProvider.on('shippingAddress', function (shippingAddrsData, changes) {
124+
var isStreetAddressDeleted, isStreetAddressNotEmpty;
125+
126+
/**
127+
* In last modifying operation street address was deleted.
128+
* @return {Boolean}
129+
*/
130+
isStreetAddressDeleted = function () {
131+
var change;
132+
133+
if (!changes || changes.length === 0) {
134+
return false;
135+
}
136+
137+
change = changes.pop();
138+
139+
if (_.isUndefined(change.value) || _.isUndefined(change.oldValue)) {
140+
return false;
141+
}
142+
143+
if (!change.path.startsWith('shippingAddress.street')) {
144+
return false;
145+
}
146+
147+
return change.value.length === 0 && change.oldValue.length > 0;
148+
};
149+
150+
isStreetAddressNotEmpty = shippingAddrsData.street && !_.isEmpty(shippingAddrsData.street[0]);
151+
152+
if (isStreetAddressNotEmpty || isStreetAddressDeleted()) {
125153
checkoutData.setShippingAddressFromData(shippingAddrsData);
126154
}
127155
});

0 commit comments

Comments
 (0)