Skip to content

Commit 43e2c4d

Browse files
committed
#18990: Shipping address is not validated in checkout when proceeding step as logged in user with default shipping address
1 parent da1a96c commit 43e2c4d

File tree

6 files changed

+122
-1
lines changed

6 files changed

+122
-1
lines changed

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,26 @@
1313
<item>Bahamas</item>
1414
</array>
1515
</entity>
16+
<entity name="DefaultCountriesWithRequiredRegions" type="countryArray">
17+
<array key="country">
18+
<item>Australia</item>
19+
<item>Brazil</item>
20+
<item>Canada</item>
21+
<item>Croatia</item>
22+
<item>Estonia</item>
23+
<item>India</item>
24+
<item>Latvia</item>
25+
<item>Lithuania</item>
26+
<item>Romania</item>
27+
<item>Spain</item>
28+
<item>Switzerland</item>
29+
<item>United States</item>
30+
<item>Australia</item>
31+
</array>
32+
</entity>
33+
<entity name="CustomCountryWithRequiredRegion" type="countryArray">
34+
<array key="country">
35+
<item>United Kingdom</item>
36+
</array>
37+
</entity>
1638
</entities>
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
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="StorefrontCustomerCheckoutWithoutRegionTest">
12+
<annotations>
13+
<features value="Checkout"/>
14+
<stories value="Checkout via the Admin"/>
15+
<title value="Shipping address is not validated in checkout when proceeding step as logged in user with default shipping address"/>
16+
<description value="Shouldn't be able to place an order as a customer without state if it's required."/>
17+
<severity value="CRITICAL"/>
18+
<testCaseId value="#"/>
19+
<group value="checkout"/>
20+
</annotations>
21+
<before>
22+
<createData entity="SimpleSubCategory" stepKey="createCategory"/>
23+
<createData entity="SimpleProduct" stepKey="createProduct">
24+
<requiredEntity createDataKey="createCategory"/>
25+
</createData>
26+
<createData entity="Simple_GB_Customer" stepKey="createCustomer"/>
27+
<actionGroup stepKey="loginToAdminPanel" ref="LoginAsAdmin"/>
28+
<actionGroup ref="SelectCountriesWithRequiredRegion" stepKey="setCustomCountryWithRequiredRegion">
29+
<argument name="countries" value="CustomCountryWithRequiredRegion"/>
30+
</actionGroup>
31+
</before>
32+
<after>
33+
<actionGroup ref="SelectCountriesWithRequiredRegion" stepKey="setDefaultCountriesWithRequiredRegion">
34+
<argument name="countries" value="DefaultCountriesWithRequiredRegions"/>
35+
</actionGroup>
36+
<actionGroup ref="logout" stepKey="logout"/>
37+
<deleteData createDataKey="createProduct" stepKey="deleteProduct"/>
38+
<deleteData createDataKey="createCategory" stepKey="deleteCategory"/>
39+
<deleteData createDataKey="createCustomer" stepKey="deleteCustomer"/>
40+
</after>
41+
42+
<actionGroup ref="LoginToStorefrontActionGroup" stepKey="customerLogin">
43+
<argument name="Customer" value="$$createCustomer$$" />
44+
</actionGroup>
45+
46+
<actionGroup ref="AddSimpleProductToCart" stepKey="addProductToCart">
47+
<argument name="product" value="$$createProduct$$"/>
48+
</actionGroup>
49+
50+
<actionGroup ref="GoToCheckoutFromMinicartActionGroup" stepKey="navigateToCheckoutPage"/>
51+
52+
<click selector="{{CheckoutShippingSection.next}}" stepKey="clickNextButton"/>
53+
<see selector="{{StorefrontMessagesSection.error}}" userInput='Please specify a regionId in shipping address.' stepKey="seeErrorMessages"/>
54+
</test>
55+
</tests>

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

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,12 @@ define([
265265
addressData,
266266
loginFormSelector = 'form[data-role=email-with-possible-login]',
267267
emailValidationResult = customer.isLoggedIn(),
268-
field;
268+
field,
269+
countryIndexedOptions = registry.get(
270+
this.parentName + '.shippingAddress.shipping-address-fieldset.country_id'
271+
).indexedOptions,
272+
option = countryIndexedOptions[quote.shippingAddress().countryId],
273+
messageContainer = registry.get('checkout.errors').messageContainer;
269274

270275
if (!quote.shippingMethod()) {
271276
this.errorValidationMessage(
@@ -318,6 +323,14 @@ define([
318323
shippingAddress['save_in_address_book'] = 1;
319324
}
320325
selectShippingAddress(shippingAddress);
326+
} else if (customer.isLoggedIn()
327+
&& option
328+
&& option['is_region_required']
329+
&& !quote.shippingAddress().region
330+
) {
331+
messageContainer.addErrorMessage({message: $t('Please specify a regionId in shipping address.')});
332+
333+
return false;
321334
}
322335

323336
if (!emailValidationResult) {

app/code/Magento/Config/Test/Mftf/ActionGroup/GeneralConfigurationActionGroup.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,17 @@
3737
<click selector="#save" stepKey="saveConfig"/>
3838
<waitForPageLoad stepKey="waitForSavingConfig"/>
3939
</actionGroup>
40+
41+
<actionGroup name="SelectCountriesWithRequiredRegion">
42+
<arguments>
43+
<argument name="countries" type="countryArray"/>
44+
</arguments>
45+
<amOnPage url="{{AdminConfigGeneralPage.url}}" stepKey="navigateToAdminConfigGeneralPage"/>
46+
<conditionalClick selector="{{StateOptionsSection.stateOptions}}" dependentSelector="{{StateOptionsSection.countriesWithRequiredRegions}}" visible="false" stepKey="expandStateOptionsTab" />
47+
<waitForAjaxLoad stepKey="waitForAjax"/>
48+
<scrollTo selector="{{StateOptionsSection.countriesWithRequiredRegions}}" stepKey="scrollToForm"/>
49+
<selectOption selector="{{StateOptionsSection.countriesWithRequiredRegions}}" parameterArray="[{{countries.country}}]" stepKey="selectCountriesWithRequiredRegion"/>
50+
<click selector="#save" stepKey="saveConfig"/>
51+
<waitForPageLoad stepKey="waitForSavingConfig"/>
52+
</actionGroup>
4053
</actionGroups>

app/code/Magento/Config/Test/Mftf/Section/GeneralSection.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,9 @@
3838
<element name="countryOptionsOpen" type="button" selector="#general_country-head.open"/>
3939
<element name="topDestinations" type="select" selector="#general_country_destinations"/>
4040
</section>
41+
<section name="StateOptionsSection">
42+
<element name="stateOptions" type="button" selector="#general_region-head"/>
43+
<element name="countriesWithRequiredRegions" type="select" selector="#general_region_state_required"/>
44+
<element name="allowToChooseState" type="select" selector="general_region_display_all"/>
45+
</section>
4146
</sections>

app/code/Magento/Customer/Test/Mftf/Data/CustomerData.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,4 +102,17 @@
102102
<data key="website_id">0</data>
103103
<requiredEntity type="address">US_Address_CA</requiredEntity>
104104
</entity>
105+
<entity name="Simple_GB_Customer" type="customer">
106+
<data key="group_id">0</data>
107+
<data key="default_billing">true</data>
108+
<data key="default_shipping">true</data>
109+
<data key="email" unique="prefix">[email protected]</data>
110+
<data key="firstname">Jane</data>
111+
<data key="lastname">Doe</data>
112+
<data key="fullname">Jane Doe</data>
113+
<data key="password">pwdTest123!</data>
114+
<data key="store_id">0</data>
115+
<data key="website_id">0</data>
116+
<requiredEntity type="address">UK_Not_Default_Address</requiredEntity>
117+
</entity>
105118
</entities>

0 commit comments

Comments
 (0)