Skip to content

Commit

Permalink
magento#18990: Shipping address is not validated in checkout when pro…
Browse files Browse the repository at this point in the history
…ceeding step as logged in user with default shipping address
  • Loading branch information
StasKozar committed Nov 2, 2018
1 parent da1a96c commit 43e2c4d
Show file tree
Hide file tree
Showing 6 changed files with 122 additions and 1 deletion.
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>
15 changes: 14 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,12 @@ define([
addressData,
loginFormSelector = 'form[data-role=email-with-possible-login]',
emailValidationResult = customer.isLoggedIn(),
field;
field,
countryIndexedOptions = registry.get(
this.parentName + '.shippingAddress.shipping-address-fieldset.country_id'
).indexedOptions,
option = countryIndexedOptions[quote.shippingAddress().countryId],
messageContainer = registry.get('checkout.errors').messageContainer;

if (!quote.shippingMethod()) {
this.errorValidationMessage(
Expand Down Expand Up @@ -318,6 +323,14 @@ 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">Jane.Doe@example.com</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>

0 comments on commit 43e2c4d

Please sign in to comment.