Skip to content

Commit bbbc3dd

Browse files
committed
MAGETWO-97239: Category rules should apply to complex products
1 parent b3abf20 commit bbbc3dd

File tree

9 files changed

+201
-0
lines changed

9 files changed

+201
-0
lines changed

app/code/Magento/Catalog/Test/Mftf/ActionGroup/AdminProductActionGroup.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,4 +226,15 @@
226226
<click selector="{{AdminProductSEOSection.sectionHeader}}" stepKey="openSeoSectionAssert"/>
227227
<seeInField userInput="{{simpleProduct.urlKey}}" selector="{{AdminProductSEOSection.urlKeyInput}}" stepKey="assertFieldUrlKey"/>
228228
</actionGroup>
229+
230+
<actionGroup name="AdminAssignProductToCategory">
231+
<arguments>
232+
<argument name="productId" type="string"/>
233+
<argument name="categoryName" type="string"/>
234+
</arguments>
235+
<amOnPage url="{{AdminProductEditPage.url(productId)}}" stepKey="amOnPage"/>
236+
<searchAndMultiSelectOption selector="{{AdminProductFormSection.categoriesDropdown}}" parameterArray="[{{categoryName}}]" stepKey="selectCategory"/>
237+
<click selector="{{AdminProductFormActionSection.saveButton}}" stepKey="clickOnSaveButton"/>
238+
<see selector="{{AdminMessagesSection.success}}" userInput="You saved the product." stepKey="seeSaveProductMessage"/>
239+
</actionGroup>
229240
</actionGroups>

app/code/Magento/Catalog/Test/Mftf/Data/ProductData.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,19 @@
260260
<requiredEntity type="product_extension_attribute">EavStockItem</requiredEntity>
261261
<requiredEntity type="custom_attribute">CustomAttributeProductAttribute</requiredEntity>
262262
</entity>
263+
<entity name="ApiSimpleTwoHidden" type="product2">
264+
<data key="sku" unique="suffix">api-simple-product-two</data>
265+
<data key="type_id">simple</data>
266+
<data key="attribute_set_id">4</data>
267+
<data key="visibility">1</data>
268+
<data key="name" unique="suffix">Api Simple Product Two</data>
269+
<data key="price">234.00</data>
270+
<data key="urlKey" unique="suffix">api-simple-product-two</data>
271+
<data key="status">1</data>
272+
<data key="quantity">100</data>
273+
<requiredEntity type="product_extension_attribute">EavStockItem</requiredEntity>
274+
<requiredEntity type="custom_attribute">CustomAttributeProductAttribute</requiredEntity>
275+
</entity>
263276
<entity name="ProductWithOptions2" type="product">
264277
<var key="sku" entityType="product" entityKey="sku" />
265278
<requiredEntity type="product_option">ProductOptionDropDownWithLongValuesTitle</requiredEntity>

app/code/Magento/Checkout/Test/Mftf/Section/StorefrontCheckoutCartSummarySection.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,6 @@
2222
<element name="blockSummary" type="button" selector="#block-summary"/>
2323
<element name="discountAmount" type="text" selector="td[data-th='Discount']"/>
2424
<element name="totalsElementByPosition" type="text" selector=".data.table.totals > tbody tr:nth-of-type({{value}}) > th" parameterized="true"/>
25+
<element name="tableTotals" type="text" selector="#cart-totals .data.table.totals"/>
2526
</section>
2627
</sections>

app/code/Magento/ConfigurableProduct/Test/Mftf/ActionGroup/AdminCreateApiConfigurableProductActionGroup.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,17 @@
6969
<requiredEntity createDataKey="getConfigAttributeOption1"/>
7070
</createData>
7171
</actionGroup>
72+
73+
<!-- Create the configurable product, children are not visible individually -->
74+
<actionGroup name="AdminCreateApiConfigurableProductWithHiddenChildActionGroup" extends="AdminCreateApiConfigurableProductActionGroup">
75+
<!-- Create the 2 children that will be a part of the configurable product -->
76+
<createData entity="ApiSimpleOneHidden" stepKey="createConfigChildProduct1">
77+
<requiredEntity createDataKey="createConfigProductAttribute"/>
78+
<requiredEntity createDataKey="getConfigAttributeOption1"/>
79+
</createData>
80+
<createData entity="ApiSimpleTwoHidden" stepKey="createConfigChildProduct2">
81+
<requiredEntity createDataKey="createConfigProductAttribute"/>
82+
<requiredEntity createDataKey="getConfigAttributeOption2"/>
83+
</createData>
84+
</actionGroup>
7285
</actionGroups>

app/code/Magento/SalesRule/Test/Mftf/ActionGroup/AdminCartPriceRuleActionGroup.xml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,27 @@
2323
<!-- This actionGroup was created to be merged from B2B because B2B has a very different form control here -->
2424
<selectOption selector="{{AdminCartPriceRulesFormSection.customerGroups}}" userInput="NOT LOGGED IN" stepKey="selectCustomerGroup"/>
2525
</actionGroup>
26+
27+
<actionGroup name="SetConditionForActionsInCartPriceRuleActionGroup">
28+
<arguments>
29+
<argument name="actionsAggregator" type="string" defaultValue="ANY"/>
30+
<argument name="actionsValue" type="string" defaultValue="FALSE"/>
31+
<argument name="childAttribute" type="string" defaultValue="Category"/>
32+
<argument name="actionValue" type="string"/>
33+
</arguments>
34+
<click selector="{{AdminCartPriceRulesFormSection.actionsHeader}}" stepKey="clickOnActionTab"/>
35+
<click selector="{{AdminCartPriceRulesFormSection.condition('ALL')}}" stepKey="clickToChooseOption"/>
36+
<selectOption selector="{{AdminCartPriceRulesFormSection.actionsAggregator}}" userInput="{{actionsAggregator}}" stepKey="selectCondition"/>
37+
<click selector="{{AdminCartPriceRulesFormSection.condition('TRUE')}}" stepKey="clickToChooseOption2"/>
38+
<selectOption selector="{{AdminCartPriceRulesFormSection.actionsValue}}" userInput="{{actionsValue}}" stepKey="selectCondition2"/>
39+
<click selector="{{AdminCartPriceRulesFormSection.conditions}}" stepKey="selectActionConditions"/>
40+
<waitForPageLoad stepKey="waitForDropDownOpened"/>
41+
<selectOption selector="{{AdminCartPriceRulesFormSection.childAttribute}}" userInput="{{childAttribute}}" stepKey="selectAttribute"/>
42+
<waitForPageLoad stepKey="waitForOperatorOpened"/>
43+
<click selector="{{AdminCartPriceRulesFormSection.condition('...')}}" stepKey="clickToChooseOption3"/>
44+
<fillField selector="{{AdminCartPriceRulesFormSection.actionValue}}" userInput="{{actionValue}}" stepKey="fillActionValue"/>
45+
<click selector="{{AdminCartPriceRulesFormSection.applyAction}}" stepKey="applyAction"/>
46+
<click selector="{{AdminMainActionsSection.save}}" stepKey="clickSaveButton"/>
47+
<see selector="{{AdminMessagesSection.success}}" userInput="You saved the rule." stepKey="seeSuccessMessage"/>
48+
</actionGroup>
2649
</actionGroups>

app/code/Magento/SalesRule/Test/Mftf/Data/SalesRuleData.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,4 +168,8 @@
168168
<data key="uses_per_coupon">10</data>
169169
<data key="simple_free_shipping">1</data>
170170
</entity>
171+
172+
<entity name="SalesRuleNoCouponWithFixedDiscount" extends="ApiCartRule">
173+
<data key="simple_action">by_fixed</data>
174+
</entity>
171175
</entities>

app/code/Magento/SalesRule/Test/Mftf/Section/AdminCartPriceRulesFormSection.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,13 @@
3535
<element name="freeShipping" type="select" selector="select[name='simple_free_shipping']"/>
3636
<element name="conditions" type="button" selector=".rule-param.rule-param-new-child > a"/>
3737
<element name="condition" type="text" selector="//span[@class='rule-param']/a[text()='{{arg}}']" parameterized="true"/>
38+
<element name="actionsAggregator" type="select" selector="#actions__1__aggregator"/>
39+
<element name="actionsValue" type="select" selector="#actions__1__value"/>
3840
<element name="operator" type="select" selector="select[name*='[operator]']"/>
3941
<element name="childAttribute" type="select" selector="select[name*='new_child']"/>
4042
<element name="optionInput" type="input" selector="ul[class*='rule-param-children'] input[name*='[value]']"/>
4143
<element name="actionValue" type="input" selector=".rule-param-edit input"/>
44+
<element name="applyAction" type="text" selector=".rule-param-apply" timeout="30"/>
4245
<element name="actionOperator" type="select" selector=".rule-param-edit select"/>
4346

4447
<!-- Manage Coupon Codes sub-form -->
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
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+
<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd">
11+
<section name="StorefrontCheckoutCartSummarySection">
12+
<element name="discountLabel" type="text" selector="//*[@id='cart-totals']//tr[.//th//span[contains(@class, 'discount coupon')]]"/>
13+
<element name="discountTotal" type="text" selector="//*[@id='cart-totals']//tr[.//th//span[contains(@class, 'discount coupon')]]//td//span//span[@class='price']"/>
14+
</section>
15+
</sections>
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
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="StorefrontCategoryRulesShouldApplyToComplexProductsTest">
12+
<annotations>
13+
<features value="CatalogRule"/>
14+
<stories value="Create cart price rule"/>
15+
<title value="Category rules should apply to complex products"/>
16+
<description value="Sales rules filtering on category should apply to all products, including complex products."/>
17+
<severity value="CRITICAL"/>
18+
<testCaseId value="MAGETWO-76029"/>
19+
<group value="catalogRule"/>
20+
</annotations>
21+
<before>
22+
<!-- Create two Categories: CAT1 and CAT2 -->
23+
<createData entity="_defaultCategory" stepKey="createCategory"/>
24+
<createData entity="SimpleSubCategory" stepKey="createCategory2"/>
25+
<!--Create config1 and config2-->
26+
<actionGroup ref="AdminCreateApiConfigurableProductWithHiddenChildActionGroup" stepKey="createConfigurableProduct1">
27+
<argument name="productName" value="config1"/>
28+
</actionGroup>
29+
<actionGroup ref="AdminCreateApiConfigurableProductWithHiddenChildActionGroup" stepKey="createConfigurableProduct2">
30+
<argument name="productName" value="config2"/>
31+
</actionGroup>
32+
<actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/>
33+
<!-- Assign config1 and the associated child products to CAT1 -->
34+
<actionGroup ref="AdminAssignProductToCategory" stepKey="assignConfigurableProduct1ToCategory">
35+
<argument name="productId" value="$$createConfigProductCreateConfigurableProduct1.id$$"/>
36+
<argument name="categoryName" value="$$createCategory.name$$"/>
37+
</actionGroup>
38+
<actionGroup ref="AdminAssignProductToCategory" stepKey="assignConfig1ChildProduct1ToCategory">
39+
<argument name="productId" value="$$createConfigChildProduct1CreateConfigurableProduct1.id$$"/>
40+
<argument name="categoryName" value="$$createCategory.name$$"/>
41+
</actionGroup>
42+
<actionGroup ref="AdminAssignProductToCategory" stepKey="assignConfig1ChildProduct2ToCategory">
43+
<argument name="productId" value="$$createConfigChildProduct2CreateConfigurableProduct1.id$$"/>
44+
<argument name="categoryName" value="$$createCategory.name$$"/>
45+
</actionGroup>
46+
<!-- Assign config12 and the associated child products to CAT2 -->
47+
<actionGroup ref="AdminAssignProductToCategory" stepKey="assignConfigurableProduct2ToCategory2">
48+
<argument name="productId" value="$$createConfigProductCreateConfigurableProduct2.id$$"/>
49+
<argument name="categoryName" value="$$createCategory2.name$$"/>
50+
</actionGroup>
51+
<actionGroup ref="AdminAssignProductToCategory" stepKey="assignConfig2ChildProduct1ToCategory2">
52+
<argument name="productId" value="$$createConfigChildProduct1CreateConfigurableProduct2.id$$"/>
53+
<argument name="categoryName" value="$$createCategory2.name$$"/>
54+
</actionGroup>
55+
<actionGroup ref="AdminAssignProductToCategory" stepKey="assignConfig2ChildProduct2ToCategory2">
56+
<argument name="productId" value="$$createConfigChildProduct2CreateConfigurableProduct2.id$$"/>
57+
<argument name="categoryName" value="$$createCategory2.name$$"/>
58+
</actionGroup>
59+
</before>
60+
<after>
61+
<!--Delete configurable product 1-->
62+
<deleteData createDataKey="createConfigProductCreateConfigurableProduct1" stepKey="deleteConfigProduct1"/>
63+
<deleteData createDataKey="createCategory" stepKey="deleteCategory1"/>
64+
<deleteData createDataKey="createConfigChildProduct1CreateConfigurableProduct1" stepKey="deleteConfigChildProduct1"/>
65+
<deleteData createDataKey="createConfigChildProduct2CreateConfigurableProduct1" stepKey="deleteConfigChildProduct2"/>
66+
<deleteData createDataKey="createConfigProductAttributeCreateConfigurableProduct1" stepKey="deleteConfigProductAttribute1"/>
67+
<!--Delete configurable product 2-->
68+
<deleteData createDataKey="createConfigProductCreateConfigurableProduct2" stepKey="deleteConfigProduct2"/>
69+
<deleteData createDataKey="createCategory2" stepKey="deleteCategory2"/>
70+
<deleteData createDataKey="createConfigChildProduct1CreateConfigurableProduct2" stepKey="deleteConfigChildProduct3"/>
71+
<deleteData createDataKey="createConfigChildProduct2CreateConfigurableProduct2" stepKey="deleteConfigChildProduct4"/>
72+
<deleteData createDataKey="createConfigProductAttributeCreateConfigurableProduct2" stepKey="deleteConfigProductAttribute2"/>
73+
<!--Delete Cart Price Rule -->
74+
<deleteData createDataKey="createCartPriceRule" stepKey="deleteCartPriceRule"/>
75+
<actionGroup ref="logout" stepKey="logout"/>
76+
</after>
77+
<!-- 1: Create a cart price rule applying to CAT1 with discount -->
78+
<createData entity="SalesRuleNoCouponWithFixedDiscount" stepKey="createCartPriceRule"/>
79+
<amOnPage url="{{AdminCartPriceRuleEditPage.url($$createCartPriceRule.rule_id$$)}}" stepKey="goToCartPriceRuleEditPage"/>
80+
<actionGroup ref="SetConditionForActionsInCartPriceRuleActionGroup" stepKey="setConditionForActionsInCartPriceRuleActionGroup">
81+
<argument name="actionValue" value="$$createCategory.id$$"/>
82+
</actionGroup>
83+
<!-- 2: Go to frontend and add an item from both CAT1 and CAT2 to your cart -->
84+
<amOnPage url="{{StorefrontHomePage.url}}" stepKey="goToFrontend"/>
85+
<!-- 3: Open configurable product 1 and add all his child products to cart -->
86+
<amOnPage url="{{StorefrontProductPage.url($$createConfigProductCreateConfigurableProduct1.custom_attributes[url_key]$$)}}" stepKey="amOnConfigurableProductPage"/>
87+
<selectOption selector="{{StorefrontProductInfoMainSection.productOptionSelect('$$createConfigProductAttributeCreateConfigurableProduct1.attribute[frontend_labels][0][label]$$')}}" userInput="$$createConfigProductAttributeOption1CreateConfigurableProduct1.option[store_labels][0][label]$$" stepKey="selectOption"/>
88+
<actionGroup ref="StorefrontAddProductToCartActionGroup" stepKey="cartAddConfigurableProductToCart">
89+
<argument name="product" value="$$createConfigProductCreateConfigurableProduct1$$"/>
90+
<argument name="productCount" value="1"/>
91+
</actionGroup>
92+
<selectOption selector="{{StorefrontProductInfoMainSection.productOptionSelect('$$createConfigProductAttributeCreateConfigurableProduct1.attribute[frontend_labels][0][label]$$')}}" userInput="$$createConfigProductAttributeOption2CreateConfigurableProduct1.option[store_labels][0][label]$$" stepKey="selectOption2"/>
93+
<actionGroup ref="StorefrontAddProductToCartActionGroup" stepKey="cartAddConfigurableProductToCart2">
94+
<argument name="product" value="$$createConfigProductCreateConfigurableProduct1$$"/>
95+
<argument name="productCount" value="2"/>
96+
</actionGroup>
97+
<actionGroup ref="clickViewAndEditCartFromMiniCart" stepKey="goToCart"/>
98+
<waitForElementVisible selector="{{StorefrontCheckoutCartSummarySection.tableTotals}}" stepKey="waitForCartTotalsBlockLoad"/>
99+
<!-- Discount amount is not applied -->
100+
<dontSee selector="{{StorefrontCheckoutCartSummarySection.discountLabel}}" stepKey="discountIsNotApply"/>
101+
<!-- 3: Open configurable product 2 and add all his child products to cart -->
102+
<amOnPage url="{{StorefrontProductPage.url($$createConfigProductCreateConfigurableProduct2.custom_attributes[url_key]$$)}}" stepKey="amOnConfigurableProductPage2"/>
103+
<selectOption selector="{{StorefrontProductInfoMainSection.productOptionSelect('$$createConfigProductAttributeCreateConfigurableProduct2.attribute[frontend_labels][0][label]$$')}}" userInput="$$createConfigProductAttributeOption1CreateConfigurableProduct2.option[store_labels][0][label]$$" stepKey="selectOption3"/>
104+
<actionGroup ref="StorefrontAddProductToCartActionGroup" stepKey="cartAddConfigurableProductToCart3">
105+
<argument name="product" value="$$createConfigProductCreateConfigurableProduct2$$"/>
106+
<argument name="productCount" value="3"/>
107+
</actionGroup>
108+
<selectOption selector="{{StorefrontProductInfoMainSection.productOptionSelect('$$createConfigProductAttributeCreateConfigurableProduct2.attribute[frontend_labels][0][label]$$')}}" userInput="$$createConfigProductAttributeOption2CreateConfigurableProduct2.option[store_labels][0][label]$$" stepKey="selectOption4"/>
109+
<actionGroup ref="StorefrontAddProductToCartActionGroup" stepKey="cartAddConfigurableProductToCart4">
110+
<argument name="product" value="$$createConfigProductCreateConfigurableProduct2$$"/>
111+
<argument name="productCount" value="4"/>
112+
</actionGroup>
113+
<!-- Discount amount is applied -->
114+
<actionGroup ref="clickViewAndEditCartFromMiniCart" stepKey="goToCart2"/>
115+
<waitForElementVisible selector="{{StorefrontCheckoutCartSummarySection.tableTotals}}" stepKey="waitForCartTotalsBlockLoad2"/>
116+
<see selector="{{StorefrontCheckoutCartSummarySection.discountTotal}}" userInput="-$100.00" stepKey="discountIsApply"/>
117+
</test>
118+
</tests>

0 commit comments

Comments
 (0)