Skip to content

Commit 7394a5a

Browse files
committed
MC-35065: Catalog pricerules are not working with custom options as expected in Magento 2.3.0 product details page
1 parent 59d47e3 commit 7394a5a

File tree

4 files changed

+55
-49
lines changed

4 files changed

+55
-49
lines changed

app/code/Magento/Catalog/Model/Product/Option/Value.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ class Value extends AbstractModel implements \Magento\Catalog\Api\Data\ProductCu
8484
* @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
8585
* @param array $data
8686
* @param CustomOptionPriceCalculator|null $customOptionPriceCalculator
87-
* @param CalculateCustomOptionCatalogRule|null $CalculateCustomOptionCatalogRule
87+
* @param CalculateCustomOptionCatalogRule|null $calculateCustomOptionCatalogRule
8888
*/
8989
public function __construct(
9090
\Magento\Framework\Model\Context $context,
@@ -94,12 +94,12 @@ public function __construct(
9494
\Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
9595
array $data = [],
9696
CustomOptionPriceCalculator $customOptionPriceCalculator = null,
97-
CalculateCustomOptionCatalogRule $CalculateCustomOptionCatalogRule = null
97+
CalculateCustomOptionCatalogRule $calculateCustomOptionCatalogRule = null
9898
) {
9999
$this->_valueCollectionFactory = $valueCollectionFactory;
100100
$this->customOptionPriceCalculator = $customOptionPriceCalculator
101101
?? ObjectManager::getInstance()->get(CustomOptionPriceCalculator::class);
102-
$this->calculateCustomOptionCatalogRule = $CalculateCustomOptionCatalogRule
102+
$this->calculateCustomOptionCatalogRule = $calculateCustomOptionCatalogRule
103103
?? ObjectManager::getInstance()->get(CalculateCustomOptionCatalogRule::class);
104104

105105
parent::__construct(

app/code/Magento/Catalog/Test/Unit/Model/Product/Option/ValueTest.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ class ValueTest extends TestCase
3434
*/
3535
private $calculateCustomOptionCatalogRule;
3636

37+
/**
38+
* @inheritDoc
39+
*/
3740
protected function setUp(): void
3841
{
3942
$mockedResource = $this->getMockedResource();
@@ -49,7 +52,7 @@ protected function setUp(): void
4952
[
5053
'resource' => $mockedResource,
5154
'valueCollectionFactory' => $mockedCollectionFactory,
52-
'CalculateCustomOptionCatalogRule' => $this->calculateCustomOptionCatalogRule
55+
'calculateCustomOptionCatalogRule' => $this->calculateCustomOptionCatalogRule
5356
]
5457
);
5558
$this->model->setOption($this->getMockedOption());

app/code/Magento/CatalogRule/Test/Mftf/Test/StorefrontApplyCatalogRuleForSimpleProductWithSelectFixedMethodTest.xml

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<title value="Admin should be able to apply the catalog price rule for simple product with custom options"/>
1515
<description value="Admin should be able to apply the catalog price rule for simple product with custom options"/>
1616
<severity value="CRITICAL"/>
17-
<testCaseId value="MC-14771"/>
17+
<testCaseId value="MC-28347"/>
1818
<group value="catalogRule"/>
1919
<group value="mtf_migrated"/>
2020
<group value="catalog"/>
@@ -24,13 +24,13 @@
2424
<createData entity="_defaultCategory" stepKey="createCategory"/>
2525

2626
<!-- Create Simple Product -->
27-
<createData entity="_defaultProduct" stepKey="createProduct1">
27+
<createData entity="_defaultProduct" stepKey="createProduct">
2828
<requiredEntity createDataKey="createCategory"/>
2929
<field key="price">56.78</field>
3030
</createData>
3131

3232
<!-- Update all products to have custom options -->
33-
<updateData createDataKey="createProduct1" entity="productWithFixedOptions" stepKey="updateFirstProductWithOptions"/>
33+
<updateData createDataKey="createProduct" entity="productWithFixedOptions" stepKey="updateProductWithOptions"/>
3434

3535
<!-- Login as Admin -->
3636
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
@@ -43,7 +43,7 @@
4343
</before>
4444
<after>
4545
<!-- Delete products and category -->
46-
<deleteData createDataKey="createProduct1" stepKey="deleteProduct1"/>
46+
<deleteData createDataKey="createProduct" stepKey="deleteProduct"/>
4747
<deleteData createDataKey="createCategory" stepKey="deleteCategory"/>
4848

4949
<!-- Delete the catalog price rule -->
@@ -52,11 +52,11 @@
5252
<actionGroup ref="AdminLogoutActionGroup" stepKey="logoutFromAdmin"/>
5353
</after>
5454
<!-- 1. Begin creating a new catalog price rule -->
55-
<actionGroup ref="AdminOpenNewCatalogPriceRuleFormPageActionGroup" stepKey="startCreatingFirstPriceRule"/>
56-
<actionGroup ref="AdminCatalogPriceRuleFillMainInfoActionGroup" stepKey="fillMainInfoForFirstPriceRule">
55+
<actionGroup ref="AdminOpenNewCatalogPriceRuleFormPageActionGroup" stepKey="openNewCatalogPriceRulePage"/>
56+
<actionGroup ref="AdminCatalogPriceRuleFillMainInfoActionGroup" stepKey="fillMainInfoForCatalogPriceRule">
5757
<argument name="groups" value="'NOT LOGGED IN'"/>
5858
</actionGroup>
59-
<actionGroup ref="AdminFillCatalogRuleConditionActionGroup" stepKey="createCatalogPriceRule">
59+
<actionGroup ref="AdminFillCatalogRuleConditionActionGroup" stepKey="fillConditionsForCatalogPriceRule">
6060
<argument name="conditionValue" value="$createCategory.id$"/>
6161
</actionGroup>
6262
<actionGroup ref="AdminCatalogPriceRuleFillActionsActionGroup" stepKey="fillActionsForCatalogPriceRule">
@@ -70,40 +70,40 @@
7070
<argument name="category" value="$createCategory$"/>
7171
</actionGroup>
7272

73-
<!-- Check product 1 name on store front category page -->
74-
<actionGroup ref="AssertProductDetailsOnStorefrontActionGroup" stepKey="storefrontProduct1Name">
75-
<argument name="productInfo" value="$createProduct1.name$"/>
73+
<!-- Check product name on store front category page -->
74+
<actionGroup ref="AssertProductDetailsOnStorefrontActionGroup" stepKey="assertStorefrontProductName">
75+
<argument name="productInfo" value="$createProduct.name$"/>
7676
<argument name="productNumber" value="1"/>
7777
</actionGroup>
7878

79-
<!-- Check product 1 price on store front category page -->
80-
<actionGroup ref="AssertProductDetailsOnStorefrontActionGroup" stepKey="storefrontProduct1Price">
79+
<!-- Check product price on store front category page -->
80+
<actionGroup ref="AssertProductDetailsOnStorefrontActionGroup" stepKey="assertStorefrontProductPrice">
8181
<argument name="productInfo" value="$44.48"/>
8282
<argument name="productNumber" value="1"/>
8383
</actionGroup>
8484

85-
<!-- Check product 1 regular price on store front category page -->
86-
<actionGroup ref="AssertProductDetailsOnStorefrontActionGroup" stepKey="storefrontProduct1RegularPrice">
85+
<!-- Check product regular price on store front category page -->
86+
<actionGroup ref="AssertProductDetailsOnStorefrontActionGroup" stepKey="assertStorefrontProductRegularPrice">
8787
<argument name="productInfo" value="$56.78"/>
8888
<argument name="productNumber" value="1"/>
8989
</actionGroup>
9090

9191
<!-- Navigate to product on store front -->
92-
<actionGroup ref="OpenStoreFrontProductPageActionGroup" stepKey="goToProductPage1">
93-
<argument name="productUrlKey" value="$createProduct1.custom_attributes[url_key]$"/>
92+
<actionGroup ref="OpenStoreFrontProductPageActionGroup" stepKey="goToProductPage">
93+
<argument name="productUrlKey" value="$createProduct.custom_attributes[url_key]$"/>
9494
</actionGroup>
9595

9696
<!-- Assert regular and special price after selecting ProductOptionValueDropdown1 -->
97-
<actionGroup ref="StorefrontSelectCustomOptionRadioAndAssertPricesActionGroup" stepKey="storefrontSelectCustomOptionAndAssertPrices1">
97+
<actionGroup ref="StorefrontSelectCustomOptionRadioAndAssertPricesActionGroup" stepKey="storefrontSelectCustomOptionAndAssertPrices">
9898
<argument name="customOption" value="ProductOptionRadioButton2"/>
9999
<argument name="customOptionValue" value="ProductOptionValueRadioButtons1"/>
100100
<argument name="productPrice" value="$156.77"/>
101101
<argument name="productFinalPrice" value="$144.47"/>
102102
</actionGroup>
103103

104104
<!-- Add product 1 to cart -->
105-
<actionGroup ref="AddToCartFromStorefrontProductPageActionGroup" stepKey="addToCartFromStorefrontProductPage1">
106-
<argument name="productName" value="$createProduct1.name$"/>
105+
<actionGroup ref="AddToCartFromStorefrontProductPageActionGroup" stepKey="addToCartFromStorefrontProductPage">
106+
<argument name="productName" value="$createProduct.name$"/>
107107
</actionGroup>
108108

109109
<!-- Assert sub total on mini shopping cart -->

app/code/Magento/CatalogRule/Test/Mftf/Test/StorefrontApplyCatalogRuleForSimpleProductsWithCustomOptionsTest.xml

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,12 @@
1414
<title value="Admin should be able to apply the catalog price rule for simple product with 3 custom options"/>
1515
<description value="Admin should be able to apply the catalog price rule for simple product with 3 custom options"/>
1616
<severity value="CRITICAL"/>
17-
<testCaseId value="MC-14769"/>
17+
<testCaseId value="MC-28345"/>
1818
<group value="catalogRule"/>
1919
<group value="mtf_migrated"/>
2020
<group value="catalog"/>
2121
</annotations>
2222
<before>
23-
<!-- Login as Admin -->
2423
<createData entity="_defaultCategory" stepKey="createCategory"/>
2524
<createData entity="_defaultProduct" stepKey="createProduct1">
2625
<requiredEntity createDataKey="createCategory"/>
@@ -36,10 +35,14 @@
3635
</createData>
3736

3837
<!-- Update all products to have custom options -->
39-
<updateData createDataKey="createProduct1" entity="productWithCustomOptions" stepKey="updateProductWithOptions1"/>
40-
<updateData createDataKey="createProduct2" entity="productWithCustomOptions" stepKey="updateProductWithOptions2"/>
41-
<updateData createDataKey="createProduct3" entity="productWithCustomOptions" stepKey="updateProductWithOptions3"/>
38+
<updateData createDataKey="createProduct1" entity="productWithCustomOptions" stepKey="updateProduc1tWithOptions"/>
39+
<updateData createDataKey="createProduct2" entity="productWithCustomOptions" stepKey="updateProduct2WithOptions"/>
40+
<updateData createDataKey="createProduct3" entity="productWithCustomOptions" stepKey="updateProduct3WithOptions"/>
41+
42+
<!-- Login as Admin -->
4243
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
44+
45+
<!-- Clear all catalog price rules before test -->
4346
<actionGroup ref="AdminCatalogPriceRuleDeleteAllActionGroup" stepKey="deleteAllCatalogRulesBeforeTest"/>
4447
</before>
4548
<after>
@@ -54,14 +57,14 @@
5457
<magentoCron groups="index" stepKey="fixInvalidatedIndices"/>
5558

5659
<!-- Logout -->
57-
<actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/>
60+
<actionGroup ref="AdminLogoutActionGroup" stepKey="logoutFromAdmin"/>
5861
</after>
5962
<!-- 1. Begin creating a new catalog price rule -->
60-
<actionGroup ref="AdminOpenNewCatalogPriceRuleFormPageActionGroup" stepKey="startCreatingFirstPriceRule"/>
61-
<actionGroup ref="AdminCatalogPriceRuleFillMainInfoActionGroup" stepKey="fillMainInfoForFirstPriceRule">
63+
<actionGroup ref="AdminOpenNewCatalogPriceRuleFormPageActionGroup" stepKey="openNewCatalogPriceRulePage"/>
64+
<actionGroup ref="AdminCatalogPriceRuleFillMainInfoActionGroup" stepKey="fillMainInfoForCatalogPriceRule">
6265
<argument name="groups" value="'NOT LOGGED IN'"/>
6366
</actionGroup>
64-
<actionGroup ref="AdminFillCatalogRuleConditionActionGroup" stepKey="createCatalogPriceRule">
67+
<actionGroup ref="AdminFillCatalogRuleConditionActionGroup" stepKey="fillConditionsForCatalogPriceRule">
6568
<argument name="conditionValue" value="$createCategory.id$"/>
6669
</actionGroup>
6770
<actionGroup ref="AdminCatalogPriceRuleFillActionsActionGroup" stepKey="fillActionsForCatalogPriceRule">
@@ -76,86 +79,86 @@
7679
</actionGroup>
7780

7881
<!-- Check product 1 price on store front category page -->
79-
<actionGroup ref="StorefrontAssertProductPriceOnCategoryPageActionGroup" stepKey="storefrontProduct1Price">
82+
<actionGroup ref="StorefrontAssertProductPriceOnCategoryPageActionGroup" stepKey="assertStorefrontProduct1Price">
8083
<argument name="productName" value="$createProduct1.name$"/>
8184
<argument name="productPrice" value="$51.10"/>
8285
</actionGroup>
8386

8487
<!-- Check product 1 regular price on store front category page -->
85-
<actionGroup ref="StorefrontAssertProductPriceOnCategoryPageActionGroup" stepKey="storefrontProduct1RegularPrice">
88+
<actionGroup ref="StorefrontAssertProductPriceOnCategoryPageActionGroup" stepKey="assertStorefrontProduct1RegularPrice">
8689
<argument name="productName" value="$createProduct1.name$"/>
8790
<argument name="productPrice" value="$56.78"/>
8891
</actionGroup>
8992

9093
<!-- Check product 2 price on store front category page -->
91-
<actionGroup ref="StorefrontAssertProductPriceOnCategoryPageActionGroup" stepKey="storefrontProduct2Price">
94+
<actionGroup ref="StorefrontAssertProductPriceOnCategoryPageActionGroup" stepKey="assertStorefrontProduct2Price">
9295
<argument name="productName" value="$createProduct2.name$"/>
9396
<argument name="productPrice" value="$51.10"/>
9497
</actionGroup>
9598

9699
<!-- Check product 2 regular price on store front category page -->
97-
<actionGroup ref="StorefrontAssertProductPriceOnCategoryPageActionGroup" stepKey="storefrontProduct2RegularPrice">
100+
<actionGroup ref="StorefrontAssertProductPriceOnCategoryPageActionGroup" stepKey="assertStorefrontProduct2RegularPrice">
98101
<argument name="productName" value="$createProduct2.name$"/>
99102
<argument name="productPrice" value="$56.78"/>
100103
</actionGroup>
101104

102105
<!-- Check product 3 price on store front category page -->
103-
<actionGroup ref="StorefrontAssertProductPriceOnCategoryPageActionGroup" stepKey="storefrontProduct3Price">
106+
<actionGroup ref="StorefrontAssertProductPriceOnCategoryPageActionGroup" stepKey="assertStorefrontProduct3Price">
104107
<argument name="productName" value="$createProduct3.name$"/>
105108
<argument name="productPrice" value="$51.10"/>
106109
</actionGroup>
107110

108111
<!-- Check product 3 regular price on store front category page -->
109-
<actionGroup ref="StorefrontAssertProductPriceOnCategoryPageActionGroup" stepKey="storefrontProduct3RegularPrice">
112+
<actionGroup ref="StorefrontAssertProductPriceOnCategoryPageActionGroup" stepKey="assertStorefrontProduct3RegularPrice">
110113
<argument name="productName" value="$createProduct3.name$"/>
111114
<argument name="productPrice" value="$56.78"/>
112115
</actionGroup>
113116

114117
<!-- Navigate to product 1 on store front -->
115-
<actionGroup ref="OpenStoreFrontProductPageActionGroup" stepKey="goToProductPage1">
118+
<actionGroup ref="OpenStoreFrontProductPageActionGroup" stepKey="goToProduct1Page">
116119
<argument name="productUrlKey" value="$createProduct1.custom_attributes[url_key]$"/>
117120
</actionGroup>
118121

119-
<!-- Assert regular and special price after selecting ProductOptionValueDropdown1 -->
120-
<actionGroup ref="StorefrontSelectCustomOptionDropDownAndAssertPricesActionGroup" stepKey="storefrontSelectCustomOptionAndAssertPrices1">
122+
<!-- Assert regular and special price for product 1 after selecting ProductOptionValueDropdown1 -->
123+
<actionGroup ref="StorefrontSelectCustomOptionDropDownAndAssertPricesActionGroup" stepKey="storefrontSelectCustomOptionAndAssertProduct1Prices">
121124
<argument name="customOption" value="{{ProductOptionValueDropdown1.title}} +$0.01"/>
122125
<argument name="productPrice" value="$56.79"/>
123126
<argument name="productFinalPrice" value="$51.11"/>
124127
</actionGroup>
125128

126129
<!-- Add product 1 to cart -->
127-
<actionGroup ref="AddToCartFromStorefrontProductPageActionGroup" stepKey="addToCartFromStorefrontProductPage1">
130+
<actionGroup ref="AddToCartFromStorefrontProductPageActionGroup" stepKey="addToCartFromStorefrontProduct1Page">
128131
<argument name="productName" value="$createProduct1.name$"/>
129132
</actionGroup>
130133

131134
<!-- Navigate to product 2 on store front -->
132-
<actionGroup ref="OpenStoreFrontProductPageActionGroup" stepKey="goToProductPage2">
135+
<actionGroup ref="OpenStoreFrontProductPageActionGroup" stepKey="goToProduct2Page">
133136
<argument name="productUrlKey" value="$createProduct2.custom_attributes[url_key]$"/>
134137
</actionGroup>
135138

136-
<!-- Assert regular and special price after selecting ProductOptionValueDropdown3 -->
137-
<actionGroup ref="StorefrontSelectCustomOptionDropDownAndAssertPricesActionGroup" stepKey="storefrontSelectCustomOptionAndAssertPrices2">
139+
<!-- Assert regular and special price for product 2 after selecting ProductOptionValueDropdown3 -->
140+
<actionGroup ref="StorefrontSelectCustomOptionDropDownAndAssertPricesActionGroup" stepKey="storefrontSelectCustomOptionAndAssertProduct2Prices">
138141
<argument name="customOption" value="{{ProductOptionValueDropdown3.title}} +$5.11"/>
139142
<argument name="productPrice" value="$62.46"/>
140143
<argument name="productFinalPrice" value="$56.21"/>
141144
</actionGroup>
142145

143146
<!-- Add product 2 to cart -->
144-
<actionGroup ref="AddToCartFromStorefrontProductPageActionGroup" stepKey="addToCartFromStorefrontProductPage2">
147+
<actionGroup ref="AddToCartFromStorefrontProductPageActionGroup" stepKey="addToCartFromStorefrontProduct2Page">
145148
<argument name="productName" value="$createProduct2.name$"/>
146149
</actionGroup>
147150

148151
<!-- Navigate to product 3 on store front -->
149-
<actionGroup ref="OpenStoreFrontProductPageActionGroup" stepKey="goToProductPage3">
152+
<actionGroup ref="OpenStoreFrontProductPageActionGroup" stepKey="goToProduct3Page">
150153
<argument name="productUrlKey" value="$createProduct3.custom_attributes[url_key]$"/>
151154
</actionGroup>
152155

153156
<!-- Add product 3 to cart with no custom option -->
154-
<actionGroup ref="AddToCartFromStorefrontProductPageActionGroup" stepKey="addToCartFromStorefrontProductPage3">
157+
<actionGroup ref="AddToCartFromStorefrontProductPageActionGroup" stepKey="addToCartFromStorefrontProduct3Page">
155158
<argument name="productName" value="$createProduct3.name$"/>
156159
</actionGroup>
157160

158-
<!-- Assert sub total on mini shopping cart -->
161+
<!-- Assert subtotal on mini shopping cart -->
159162
<actionGroup ref="AssertSubTotalOnStorefrontMiniCartActionGroup" stepKey="assertSubTotalOnStorefrontMiniCart">
160163
<argument name="subTotal" value="$158.42"/>
161164
</actionGroup>

0 commit comments

Comments
 (0)