Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions app/code/Magento/Checkout/Test/Mftf/Data/CountryData.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,26 @@
<item>Bahamas</item>
</array>
</entity>
<entity name="DefaultCountriesWithRequiredRegions" type="countryArray">
<array key="country">
<item>Australia</item>
<item>Brazil</item>
<item>Canada</item>
<item>Croatia</item>
<item>Estonia</item>
<item>India</item>
<item>Latvia</item>
<item>Lithuania</item>
<item>Romania</item>
<item>Spain</item>
<item>Switzerland</item>
<item>United States</item>
<item>Australia</item>
</array>
</entity>
<entity name="CustomCountryWithRequiredRegion" type="countryArray">
<array key="country">
<item>United Kingdom</item>
</array>
</entity>
</entities>
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<?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="StorefrontCustomerCheckoutWithoutRegionTest">
<annotations>
<features value="Checkout"/>
<stories value="Checkout via the Admin"/>
<title value="Shipping address is not validated in checkout when proceeding step as logged in user with default shipping address"/>
<description value="Shouldn't be able to place an order as a customer without state if it's required."/>
<severity value="CRITICAL"/>
<testCaseId value="#"/>
<group value="checkout"/>
</annotations>
<before>
<createData entity="SimpleSubCategory" stepKey="createCategory"/>
<createData entity="SimpleProduct" stepKey="createProduct">
<requiredEntity createDataKey="createCategory"/>
</createData>
<createData entity="Simple_GB_Customer" stepKey="createCustomer"/>
<actionGroup stepKey="loginToAdminPanel" ref="LoginAsAdmin"/>
<actionGroup ref="SelectCountriesWithRequiredRegion" stepKey="setCustomCountryWithRequiredRegion">
<argument name="countries" value="CustomCountryWithRequiredRegion"/>
</actionGroup>
</before>
<after>
<actionGroup ref="SelectCountriesWithRequiredRegion" stepKey="setDefaultCountriesWithRequiredRegion">
<argument name="countries" value="DefaultCountriesWithRequiredRegions"/>
</actionGroup>
<actionGroup ref="logout" stepKey="logout"/>
<deleteData createDataKey="createProduct" stepKey="deleteProduct"/>
<deleteData createDataKey="createCategory" stepKey="deleteCategory"/>
<deleteData createDataKey="createCustomer" stepKey="deleteCustomer"/>
</after>

<actionGroup ref="LoginToStorefrontActionGroup" stepKey="customerLogin">
<argument name="Customer" value="$$createCustomer$$" />
</actionGroup>

<actionGroup ref="AddSimpleProductToCart" stepKey="addProductToCart">
<argument name="product" value="$$createProduct$$"/>
</actionGroup>

<actionGroup ref="GoToCheckoutFromMinicartActionGroup" stepKey="navigateToCheckoutPage"/>

<click selector="{{CheckoutShippingSection.next}}" stepKey="clickNextButton"/>
<see selector="{{StorefrontMessagesSection.error}}" userInput='Please specify a regionId in shipping address.' stepKey="seeErrorMessages"/>
</test>
</tests>
16 changes: 15 additions & 1 deletion app/code/Magento/Checkout/view/frontend/web/js/view/shipping.js
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,11 @@ define([
addressData,
loginFormSelector = 'form[data-role=email-with-possible-login]',
emailValidationResult = customer.isLoggedIn(),
field;
field,
country = registry.get(this.parentName + '.shippingAddress.shipping-address-fieldset.country_id'),
countryIndexedOptions = country.indexedOptions,
option = countryIndexedOptions[quote.shippingAddress().countryId],
messageContainer = registry.get('checkout.errors').messageContainer;

if (!quote.shippingMethod()) {
this.errorValidationMessage(
Expand Down Expand Up @@ -318,6 +322,16 @@ define([
shippingAddress['save_in_address_book'] = 1;
}
selectShippingAddress(shippingAddress);
} else if (customer.isLoggedIn() &&
option &&
option['is_region_required'] &&
!quote.shippingAddress().region
) {
messageContainer.addErrorMessage({
message: $t('Please specify a regionId in shipping address.')
});

return false;
}

if (!emailValidationResult) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,17 @@
<click selector="#save" stepKey="saveConfig"/>
<waitForPageLoad stepKey="waitForSavingConfig"/>
</actionGroup>

<actionGroup name="SelectCountriesWithRequiredRegion">
<arguments>
<argument name="countries" type="countryArray"/>
</arguments>
<amOnPage url="{{AdminConfigGeneralPage.url}}" stepKey="navigateToAdminConfigGeneralPage"/>
<conditionalClick selector="{{StateOptionsSection.stateOptions}}" dependentSelector="{{StateOptionsSection.countriesWithRequiredRegions}}" visible="false" stepKey="expandStateOptionsTab" />
<waitForAjaxLoad stepKey="waitForAjax"/>
<scrollTo selector="{{StateOptionsSection.countriesWithRequiredRegions}}" stepKey="scrollToForm"/>
<selectOption selector="{{StateOptionsSection.countriesWithRequiredRegions}}" parameterArray="[{{countries.country}}]" stepKey="selectCountriesWithRequiredRegion"/>
<click selector="#save" stepKey="saveConfig"/>
<waitForPageLoad stepKey="waitForSavingConfig"/>
</actionGroup>
</actionGroups>
5 changes: 5 additions & 0 deletions app/code/Magento/Config/Test/Mftf/Section/GeneralSection.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,9 @@
<element name="countryOptionsOpen" type="button" selector="#general_country-head.open"/>
<element name="topDestinations" type="select" selector="#general_country_destinations"/>
</section>
<section name="StateOptionsSection">
<element name="stateOptions" type="button" selector="#general_region-head"/>
<element name="countriesWithRequiredRegions" type="select" selector="#general_region_state_required"/>
<element name="allowToChooseState" type="select" selector="general_region_display_all"/>
</section>
</sections>
13 changes: 13 additions & 0 deletions app/code/Magento/Customer/Test/Mftf/Data/CustomerData.xml
Original file line number Diff line number Diff line change
Expand Up @@ -102,4 +102,17 @@
<data key="website_id">0</data>
<requiredEntity type="address">US_Address_CA</requiredEntity>
</entity>
<entity name="Simple_GB_Customer" type="customer">
<data key="group_id">0</data>
<data key="default_billing">true</data>
<data key="default_shipping">true</data>
<data key="email" unique="prefix">[email protected]</data>
<data key="firstname">Jane</data>
<data key="lastname">Doe</data>
<data key="fullname">Jane Doe</data>
<data key="password">pwdTest123!</data>
<data key="store_id">0</data>
<data key="website_id">0</data>
<requiredEntity type="address">UK_Not_Default_Address</requiredEntity>
</entity>
</entities>