Skip to content

Commit 41c6414

Browse files
committed
Merge remote-tracking branch 'origin/MAGETWO-89438' into 2.2-develop-pr61
2 parents c751336 + 8c91dde commit 41c6414

File tree

4 files changed

+80
-4
lines changed

4 files changed

+80
-4
lines changed

app/code/Magento/Catalog/Test/Mftf/Section/AdminProductFormAdvancedPricingSection.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<element name="productTierPriceValueTypeSelect" type="select" selector="[name='product[tier_price][{{var1}}][value_type]']" parameterized="true"/>
1919
<element name="productTierPriceFixedPriceInput" type="input" selector="[name='product[tier_price][{{var1}}][price]']" parameterized="true"/>
2020
<element name="productTierPricePercentageValuePriceInput" type="input" selector="[name='product[tier_price][{{var1}}][percentage_value]']" parameterized="true"/>
21+
<element name="productTierPricePercentageError" type="text" selector="div[data-index='percentage_value'] label.admin__field-error" />
2122
<element name="specialPrice" type="input" selector="input[name='product[special_price]']"/>
2223
<element name="doneButton" type="button" selector=".product_form_product_form_advanced_pricing_modal button.action-primary" timeout="5"/>
2324
</section>
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
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" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
10+
<test name="AdminValidateApplyingTierPriceWithEmptyDiscountValueTest">
11+
<annotations>
12+
<features value="Apply tier price"/>
13+
<title value="Apply Tier Price with empty discount value"/>
14+
<description value="Validate applying tier price to product"/>
15+
<stories value="Apply Tier Price with empty discount value" />
16+
<severity value="CRITICAL"/>
17+
<testCaseId value="MAGETWO-96484"/>
18+
<group value="product"/>
19+
</annotations>
20+
<before>
21+
<createData entity="_defaultCategory" stepKey="createCategory"/>
22+
<createData entity="SimpleProduct" stepKey="createSimpleProduct">
23+
<requiredEntity createDataKey="createCategory"/>
24+
</createData>
25+
</before>
26+
<after>
27+
<deleteData createDataKey="createSimpleProduct" stepKey="deleteSimpleProduct"/>
28+
<deleteData createDataKey="createCategory" stepKey="deleteCategory"/>
29+
<amOnPage url="{{AdminProductIndexPage.url}}" stepKey="navigateToProductIndex"/>
30+
<actionGroup ref="AdminResetProductGridToDefaultViewActionGroup" stepKey="resetGridToDefaultKeywordSearch"/>
31+
<actionGroup ref="logout" stepKey="logoutFromAdmin"/>
32+
</after>
33+
34+
<actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/>
35+
<actionGroup ref="SearchForProductOnBackendActionGroup" stepKey="searchForSimpleProduct">
36+
<argument name="product" value="$$createSimpleProduct$$"/>
37+
</actionGroup>
38+
<actionGroup ref="OpenEditProductOnBackendActionGroup" stepKey="openEditProductPage">
39+
<argument name="product" value="$$createSimpleProduct$$"/>
40+
</actionGroup>
41+
<click selector="{{AdminProductFormSection.advancedPricingLink}}" stepKey="clickOnAdvancedPricingButton"/>
42+
<waitForElement selector="{{AdminProductFormAdvancedPricingSection.customerGroupPriceAddButton}}" stepKey="waitForCustomerGroupPriceAddButton"/>
43+
<click selector="{{AdminProductFormAdvancedPricingSection.customerGroupPriceAddButton}}" stepKey="addCustomerGroupPrice"/>
44+
<fillField selector="{{AdminProductFormAdvancedPricingSection.productTierPriceQtyInput('0')}}" userInput="1" stepKey="fillProductTierPriceQtyInput"/>
45+
<selectOption selector="{{AdminProductFormAdvancedPricingSection.productTierPriceValueTypeSelect('0')}}" userInput="Discount" stepKey="selectProductTierPriceValueType"/>
46+
<clearField selector="{{AdminProductFormAdvancedPricingSection.productTierPricePercentageValuePriceInput('0')}}" stepKey="clearPercentageValueField"/>
47+
<click selector="{{AdminProductFormAdvancedPricingSection.doneButton}}" stepKey="clickDoneButton"/>
48+
<see selector="{{AdminProductFormAdvancedPricingSection.productTierPricePercentageError}}" userInput="This is a required field." stepKey="assertPercentageError"/>
49+
<fillField selector="{{AdminProductFormAdvancedPricingSection.productTierPricePercentageValuePriceInput('0')}}" userInput="10" stepKey="setPercentageValue"/>
50+
<click selector="{{AdminProductFormAdvancedPricingSection.doneButton}}" stepKey="clickDoneButton1"/>
51+
<dontSee selector="{{AdminProductFormAdvancedPricingSection.productTierPricePercentageError}}" userInput="This is a required field." stepKey="assertNoPercentageError"/>
52+
<actionGroup ref="SaveProductOnProductPageOnAdmin" stepKey="saveProduct"/>
53+
</test>
54+
</tests>

app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/TierPrice.php

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public function __construct(
4545
}
4646

4747
/**
48-
* {@inheritdoc}
48+
* @inheritdoc
4949
* @since 101.1.0
5050
*/
5151
public function modifyData(array $data)
@@ -54,8 +54,11 @@ public function modifyData(array $data)
5454
}
5555

5656
/**
57-
* {@inheritdoc}
57+
* Add tier price info to meta array.
58+
*
5859
* @since 101.1.0
60+
* @param array $meta
61+
* @return array
5962
*/
6063
public function modifyMeta(array $meta)
6164
{
@@ -150,8 +153,8 @@ private function getUpdatedTierPriceStructure(array $priceMeta)
150153
'dataType' => Price::NAME,
151154
'addbefore' => '%',
152155
'validation' => [
153-
'validate-number' => true,
154-
'less-than-equals-to' => 100
156+
'required-entry' => true,
157+
'validate-positive-percent-decimal' => true,
155158
],
156159
'visible' => $firstOption
157160
&& $firstOption['value'] == ProductPriceOptionsInterface::VALUE_PERCENT,

app/code/Magento/Ui/view/base/web/js/lib/validation/rules.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -691,6 +691,24 @@ define([
691691
},
692692
$.mage.__('The value is not within the specified range.')
693693
],
694+
'validate-positive-percent-decimal': [
695+
function (value) {
696+
var numValue;
697+
698+
if (utils.isEmptyNoTrim(value) || !/^\s*-?\d*(\.\d*)?\s*$/.test(value)) {
699+
return false;
700+
}
701+
702+
numValue = utils.parseNumber(value);
703+
704+
if (isNaN(numValue)) {
705+
return false;
706+
}
707+
708+
return utils.isBetween(numValue, 0.01, 100);
709+
},
710+
$.mage.__('Please enter a valid percentage discount value greater than 0.')
711+
],
694712
'validate-digits': [
695713
function (value) {
696714
return utils.isEmptyNoTrim(value) || !/[^\d]/.test(value);

0 commit comments

Comments
 (0)