Skip to content

Commit fb821b4

Browse files
committed
MAGETWO-97240: Category rules should apply to complex products
1 parent d1f9c6b commit fb821b4

File tree

4 files changed

+162
-0
lines changed

4 files changed

+162
-0
lines changed

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,4 +263,15 @@
263263
<click selector="{{AdminCategoryMainActionsSection.SaveButton}}" stepKey="saveCategory"/>
264264
<seeElement selector="{{AdminCategoryMessagesSection.SuccessMessage}}" stepKey="assertSuccessMessage"/>
265265
</actionGroup>
266+
267+
<actionGroup name="AdminAssignProductToCategory">
268+
<arguments>
269+
<argument name="productId" type="string"/>
270+
<argument name="categoryName" type="string"/>
271+
</arguments>
272+
<amOnPage url="{{AdminProductEditPage.url(productId)}}" stepKey="amOnPage"/>
273+
<searchAndMultiSelectOption selector="{{AdminProductFormSection.categoriesDropdown}}" parameterArray="[{{categoryName}}]" stepKey="selectCategory"/>
274+
<click selector="{{AdminProductFormActionSection.saveButton}}" stepKey="clickOnSaveButton"/>
275+
<seeElement selector="{{AdminProductMessagesSection.successMessage}}" stepKey="seeSaveProductMessage"/>
276+
</actionGroup>
266277
</actionGroups>

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,17 @@
6262
<requiredEntity createDataKey="createConfigChildProduct2"/>
6363
</createData>
6464
</actionGroup>
65+
66+
<!-- Create the configurable product, children are not visible individually -->
67+
<actionGroup name="AdminCreateApiConfigurableProductWithHiddenChildActionGroup" extends="AdminCreateApiConfigurableProductActionGroup">
68+
<!-- Create the 2 children that will be a part of the configurable product -->
69+
<createData entity="ApiSimpleOneHidden" stepKey="createConfigChildProduct1">
70+
<requiredEntity createDataKey="createConfigProductAttribute"/>
71+
<requiredEntity createDataKey="getConfigAttributeOption1"/>
72+
</createData>
73+
<createData entity="ApiSimpleTwoHidden" stepKey="createConfigChildProduct2">
74+
<requiredEntity createDataKey="createConfigProductAttribute"/>
75+
<requiredEntity createDataKey="getConfigAttributeOption2"/>
76+
</createData>
77+
</actionGroup>
6578
</actionGroups>

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,12 @@
4141
<element name="conditions" type="button" selector=".rule-param.rule-param-new-child > a"/>
4242
<element name="childAttribute" type="select" selector="//select[contains(@name, 'new_child')]"/>
4343
<element name="condition" type="text" selector="//span[@class='rule-param']/a[text()='{{arg}}']" parameterized="true"/>
44+
<element name="actionsAggregator" type="select" selector="#actions__1__aggregator"/>
45+
<element name="actionsValue" type="select" selector="#actions__1__value"/>
4446
<element name="operator" type="select" selector="//select[contains(@name, '[operator]')]"/>
4547
<element name="option" type="select" selector="//ul[@class='rule-param-children']//select[contains(@name, '[value]')]"/>
4648
<element name="actionValue" type="input" selector=".rule-param-edit input"/>
49+
<element name="applyAction" type="text" selector=".rule-param-apply" timeout="30"/>
4750
<element name="actionOperator" type="select" selector=".rule-param-edit select"/>
4851
<element name="applyDiscountToShipping" type="checkbox" selector="input[name='apply_to_shipping']"/>
4952
<element name="applyDiscountToShippingLabel" type="checkbox" selector="input[name='apply_to_shipping']+label"/>
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
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-70192"/>
19+
<group value="CatalogRule"/>
20+
</annotations>
21+
<before>
22+
<!-- Create two Categories: CAT1 and CAT2 -->
23+
<createData entity="SimpleSubCategory" 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="assignProductToCategory">
35+
<argument name="productId" value="$$createConfigProductCreateConfigurableProduct1.id$$"/>
36+
<argument name="categoryName" value="$$createCategory.name$$"/>
37+
</actionGroup>
38+
<actionGroup ref="AdminAssignProductToCategory" stepKey="assignProductToCategory2">
39+
<argument name="productId" value="$$createConfigChildProduct1CreateConfigurableProduct1.id$$"/>
40+
<argument name="categoryName" value="$$createCategory.name$$"/>
41+
</actionGroup>
42+
<actionGroup ref="AdminAssignProductToCategory" stepKey="assignProductToCategory3">
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="assignProductToCategory5">
48+
<argument name="productId" value="$$createConfigProductCreateConfigurableProduct2.id$$"/>
49+
<argument name="categoryName" value="$$createCategory.name$$"/>
50+
</actionGroup>
51+
<actionGroup ref="AdminAssignProductToCategory" stepKey="assignProductToCategor5">
52+
<argument name="productId" value="$$createConfigChildProduct1CreateConfigurableProduct2.id$$"/>
53+
<argument name="categoryName" value="$$createCategory2.name$$"/>
54+
</actionGroup>
55+
<actionGroup ref="AdminAssignProductToCategory" stepKey="assignProductToCategory6">
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+
<actionGroup ref="DeleteCartPriceRuleByName" stepKey="deleteCartPriceRule">
75+
<argument name="ruleName" value="{{ApiSalesRule.name}}"/>
76+
</actionGroup>
77+
<actionGroup ref="logout" stepKey="logout"/>
78+
</after>
79+
<!-- 1: Create a cart price rule applying to CAT1 with discount -->
80+
<amOnPage url="{{AdminCartPriceRulesPage.url}}" stepKey="amOnCartPriceGridPage"/>
81+
<click selector="{{AdminCartPriceRulesSection.addNewRuleButton}}" stepKey="clickAddNewRule"/>
82+
<fillField selector="{{AdminCartPriceRulesFormSection.ruleName}}" userInput="{{ApiSalesRule.name}}" stepKey="fillRuleName"/>
83+
<selectOption selector="{{AdminCartPriceRulesFormSection.websites}}" userInput="Main Website" stepKey="selectWebsite"/>
84+
<actionGroup ref="selectNotLoggedInCustomerGroup" stepKey="chooseNotLoggedInCustomerGroup"/>
85+
<!-- Open the Actions Tab-->
86+
<click selector="{{AdminCartPriceRulesFormSection.actionsHeader}}" stepKey="clickOnActionTab"/>
87+
<fillField selector="{{AdminCartPriceRulesFormSection.discountAmount}}" userInput="50" stepKey="fillDiscountAmount"/>
88+
<selectOption selector="{{AdminCartPriceRulesFormSection.apply}}" userInput="Fixed amount discount" stepKey="selectActionType"/>
89+
<click selector="{{AdminCartPriceRulesFormSection.condition('ALL')}}" stepKey="clickToChooseOption2"/>
90+
<selectOption selector="{{AdminCartPriceRulesFormSection.actionsAggregator}}" userInput="ANY" stepKey="selectCondition"/>
91+
<click selector="{{AdminCartPriceRulesFormSection.condition('TRUE')}}" stepKey="clickToChooseOption3"/>
92+
<selectOption selector="{{AdminCartPriceRulesFormSection.actionsValue}}" userInput="FALSE" stepKey="selectCondition2"/>
93+
<click selector="{{AdminCartPriceRulesFormSection.conditions}}" stepKey="selectActionConditions"/>
94+
<waitForPageLoad stepKey="waitForDropDownOpened"/>
95+
<selectOption selector="{{AdminCartPriceRulesFormSection.childAttribute}}" userInput="Category" stepKey="selectAttribute"/>
96+
<waitForPageLoad stepKey="waitForOperatorOpened"/>
97+
<click selector="{{AdminCartPriceRulesFormSection.condition('...')}}" stepKey="clickToChooseOption1"/>
98+
<fillField selector="{{AdminCartPriceRulesFormSection.actionValue}}" userInput="$$createCategory.id$$" stepKey="fillActionValue"/>
99+
<click selector="{{AdminCartPriceRulesFormSection.applyAction}}" stepKey="applyAction"/>
100+
<click selector="{{AdminCartPriceRulesFormSection.save}}" stepKey="clickSaveButton"/>
101+
<see selector="{{AdminCartPriceRulesSection.messages}}" userInput="You saved the rule." stepKey="seeSuccessMessage"/>
102+
<!-- 2: Go to frontend and add an item from both CAT1 and CAT2 to your cart -->
103+
<amOnPage url="{{StorefrontHomePage.url}}" stepKey="goToFrontend"/>
104+
<!-- 3: Open configurable product 1 and add all his child products to cart -->
105+
<amOnPage url="{{StorefrontProductPage.url($$createConfigProductCreateConfigurableProduct1.custom_attributes[url_key]$$)}}" stepKey="amOnConfigurableProductPage"/>
106+
<selectOption selector="{{StorefrontProductInfoMainSection.productOptionSelect('$$createConfigProductAttributeCreateConfigurableProduct1.attribute[frontend_labels][0][label]$$')}}" userInput="$$createConfigProductAttributeOption1CreateConfigurableProduct1.option[store_labels][0][label]$$" stepKey="selectOption"/>
107+
<actionGroup ref="StorefrontAddProductToCartActionGroup" stepKey="cartAddConfigurableProductToCart">
108+
<argument name="product" value="$$createConfigProductCreateConfigurableProduct1$$"/>
109+
<argument name="productCount" value="1"/>
110+
</actionGroup>
111+
<selectOption selector="{{StorefrontProductInfoMainSection.productOptionSelect('$$createConfigProductAttributeCreateConfigurableProduct1.attribute[frontend_labels][0][label]$$')}}" userInput="$$createConfigProductAttributeOption2CreateConfigurableProduct1.option[store_labels][0][label]$$" stepKey="selectOption2"/>
112+
<actionGroup ref="StorefrontAddProductToCartActionGroup" stepKey="cartAddConfigurableProductToCart2">
113+
<argument name="product" value="$$createConfigProductCreateConfigurableProduct1$$"/>
114+
<argument name="productCount" value="2"/>
115+
</actionGroup>
116+
<actionGroup ref="clickViewAndEditCartFromMiniCart" stepKey="goToCart"/>
117+
<!-- Discount amount is not applied -->
118+
<dontSee selector="{{CheckoutCartSummarySection.discountLabel}}" stepKey="discountIsNotApply"/>
119+
<!-- 3: Open configurable product 2 and add all his child products to cart -->
120+
<amOnPage url="{{StorefrontProductPage.url($$createConfigProductCreateConfigurableProduct2.custom_attributes[url_key]$$)}}" stepKey="amOnConfigurableProductPage2"/>
121+
<selectOption selector="{{StorefrontProductInfoMainSection.productOptionSelect('$$createConfigProductAttributeCreateConfigurableProduct2.attribute[frontend_labels][0][label]$$')}}" userInput="$$createConfigProductAttributeOption1CreateConfigurableProduct2.option[store_labels][0][label]$$" stepKey="selectOption3"/>
122+
<actionGroup ref="StorefrontAddProductToCartActionGroup" stepKey="cartAddConfigurableProductToCart3">
123+
<argument name="product" value="$$createConfigProductCreateConfigurableProduct2$$"/>
124+
<argument name="productCount" value="3"/>
125+
</actionGroup>
126+
<selectOption selector="{{StorefrontProductInfoMainSection.productOptionSelect('$$createConfigProductAttributeCreateConfigurableProduct2.attribute[frontend_labels][0][label]$$')}}" userInput="$$createConfigProductAttributeOption2CreateConfigurableProduct2.option[store_labels][0][label]$$" stepKey="selectOption4"/>
127+
<actionGroup ref="StorefrontAddProductToCartActionGroup" stepKey="cartAddConfigurableProductToCart4">
128+
<argument name="product" value="$$createConfigProductCreateConfigurableProduct2$$"/>
129+
<argument name="productCount" value="4"/>
130+
</actionGroup>
131+
<!-- Discount amount is applied -->
132+
<actionGroup ref="clickViewAndEditCartFromMiniCart" stepKey="goToCart2"/>
133+
<see selector="{{CheckoutCartSummarySection.discountTotal}}" userInput="-$100.00" stepKey="discountIsApply"/>
134+
</test>
135+
</tests>

0 commit comments

Comments
 (0)