Skip to content

Commit 9c57a12

Browse files
committed
Merge remote-tracking branch 'remotes/origin/MC-15297' into cms-team-1-delivery
2 parents 9f43113 + ea96a2b commit 9c57a12

File tree

8 files changed

+228
-56
lines changed

8 files changed

+228
-56
lines changed

app/code/Magento/PageBuilder/Controller/Adminhtml/Form/Element/ProductConditions/Child.php

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@
88

99
namespace Magento\PageBuilder\Controller\Adminhtml\Form\Element\ProductConditions;
1010

11+
use Magento\Framework\App\Action\HttpPostActionInterface;
1112
use Magento\Rule\Model\Condition\AbstractCondition;
1213

1314
/**
1415
* Responsible for rendering the child elements of the conditions rule tree using the provided params
1516
*/
16-
class Child extends \Magento\CatalogWidget\Controller\Adminhtml\Product\Widget
17+
class Child extends \Magento\CatalogWidget\Controller\Adminhtml\Product\Widget implements HttpPostActionInterface
1718
{
1819
/**
1920
* @var \Magento\CatalogWidget\Model\Rule
@@ -33,6 +34,8 @@ public function __construct(
3334
}
3435

3536
/**
37+
* Render child template
38+
*
3639
* @return void
3740
*/
3841
public function execute()
@@ -43,19 +46,25 @@ public function execute()
4346

4447
$typeData = explode('|', str_replace('-', '/', $this->getRequest()->getParam('type')));
4548
$className = $typeData[0];
49+
$prefix = $this->getRequest()->getParam('prefix', 'conditions');
4650

4751
$model = $this->_objectManager->create($className)
4852
->setId($id)
4953
->setType($className)
5054
->setRule($this->rule)
51-
->setPrefix($this->getRequest()->getParam('prefix', 'conditions'));
55+
->setPrefix($prefix);
5256

5357
if (!empty($typeData[1])) {
5458
$model->setAttribute($typeData[1]);
5559
}
5660

5761
$result = '';
5862
if ($model instanceof AbstractCondition) {
63+
// set value of $prefix in model's data registry to value of 'conditions',
64+
// as is required for correct use of \Magento\Rule\Model\Condition\Combine::getConditions
65+
if ($model->getData($prefix) === null) {
66+
$model->setData($prefix, $model->getData('conditions'));
67+
}
5968
$model->setJsFormObject($jsObjectName);
6069
$model->setFormName($formName);
6170
$result = $model->asHtmlRecursive();

app/code/Magento/PageBuilder/Test/Mftf/ActionGroup/ContentTypeProductsActionGroup.xml

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -74,17 +74,40 @@
7474
<grabMultiple selector="{{page.product(index)}}" stepKey="grabProducts"/>
7575
<assertCount stepKey="assertCount" expected="{{count}}" expectedType="int" actualType="variable" actual="grabProducts"/>
7676
</actionGroup>
77-
<actionGroup name="addCategoryConditionToProductsBlock">
77+
<actionGroup name="addConditionToProductConditions">
7878
<arguments>
79-
<argument name="page" defaultValue=""/>
80-
<argument name="category" defaultValue="" type="string"/>
81-
<argument name="conditionIndex" defaultValue="1" type="string"/>
79+
<argument name="conditionType" defaultValue="PageBuilderProductsConditionCategory"/>
80+
<argument name="conditionInput" defaultValue="1" type="string"/>
81+
<argument name="index" defaultValue="1" type="string"/>
82+
</arguments>
83+
<comment userInput="addConditionToProductConditions" stepKey="comment"/>
84+
<waitForElementVisible selector="{{ProductsContentTypeForm.conditionsList}}" stepKey="waitForConditionsToLoad"/>
85+
<waitForElementVisible selector="{{ProductsContentTypeForm.conditionsListAddButton(index)}}" stepKey="waitForAddConditionButton"/>
86+
<click selector="{{ProductsContentTypeForm.conditionsListAddButton(index)}}" stepKey="clickAddConditionButton"/>
87+
<selectOption selector="{{ProductsContentTypeForm.conditionsListAddTypeSelect(index)}}" userInput="{{conditionType.value}}" stepKey="selectConditionType"/>
88+
<waitForPageLoad stepKey="waitForConditionFieldsToLoad"/>
89+
<click selector="{{ProductsContentTypeForm.conditionsListConditionPlaceholder}}" stepKey="revealCategoryInput"/>
90+
<fillField selector="{{ProductsContentTypeForm.conditionsListConditionInput}}" userInput="{{conditionInput}}" stepKey="fillCategoryField"/>
91+
</actionGroup>
92+
<actionGroup name="addConditionsCombinationToProductsAndSetAggregateParameters">
93+
<arguments>
94+
<argument name="aggregatorType" defaultValue="all" type="string"/>
95+
<argument name="booleanValueForAggregator" defaultValue="1" type="string"/>
96+
<argument name="index" defaultValue="1" type="string"/>
8297
</arguments>
83-
<waitForElementVisible selector="{{page.conditionsList}}" stepKey="waitForConditionsToLoad"/>
84-
<click selector="{{page.conditionsListAddButton}}" stepKey="addCondition"/>
85-
<selectOption selector="{{page.conditionsListAddTypeSelect}}" userInput="Magento\CatalogWidget\Model\Rule\Condition\Product|category_ids" stepKey="selectCategoryOption"/>
86-
<waitForLoadingMaskToDisappear stepKey="waitForCategoriesToLoad"/>
87-
<click selector="{{page.conditionsListConditionPlaceholder}}" stepKey="revealCategoryInput"/>
88-
<fillField selector="{{page.conditionsListConditionInput}}" userInput="{{category}}" stepKey="fillCategoryField"/>
98+
<comment userInput="addConditionsCombinationToProductsAndSetAggregateParameters" stepKey="comment"/>
99+
<waitForElementVisible selector="{{ProductsContentTypeForm.conditionsList}}" stepKey="waitForConditionsToLoad"/>
100+
<waitForElementVisible selector="{{ProductsContentTypeForm.conditionsListAddButton(index)}}" stepKey="waitForAddConditionButton"/>
101+
<click selector="{{ProductsContentTypeForm.conditionsListAddButton(index)}}" stepKey="clickAddConditionButton"/>
102+
<selectOption selector="{{ProductsContentTypeForm.conditionsListAddTypeSelect(index)}}" userInput="{{PageBuilderProductsConditionCombination.value}}" stepKey="selectCombinationOption"/>
103+
<waitForPageLoad stepKey="waitForConditionsCombinationTemplateToLoad"/>
104+
<click selector="{{ProductsContentTypeForm.conditionsCombinationAggregateSelector(index)}}" stepKey="clickAggregateType"/>
105+
<selectOption selector="{{ProductsContentTypeForm.conditionsCombinationAggregateSelectorSelect(index)}}" userInput="{{aggregatorType}}" stepKey="selectAggregateType"/>
106+
<waitForPageLoad stepKey="waitForAggregateTypeToLoad"/>
107+
<click selector="{{ProductsContentTypeForm.conditionsListText}}" stepKey="clearOptions"/>
108+
<click selector="{{ProductsContentTypeForm.conditionsCombinationAggregateBooleanSelector(index)}}" stepKey="clickAggregateTypeBoolean"/>
109+
<selectOption selector="{{ProductsContentTypeForm.conditionsCombinationAggregateBooleanSelectorSelect(index)}}" userInput="{{booleanValueForAggregator}}" stepKey="selectAggregateTypeBoolean"/>
110+
<waitForPageLoad stepKey="waitForAggregateTypeBooleanToLoad"/>
111+
<click selector="{{ProductsContentTypeForm.conditionsListText}}" stepKey="clearOptions2"/>
89112
</actionGroup>
90113
</actionGroups>

app/code/Magento/PageBuilder/Test/Mftf/Data/ProductAttributeSetData.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<entities xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
1010
xsi:noNamespaceSchemaLocation="urn:magento:mftf:DataGenerator/etc/dataProfileSchema.xsd">
1111
<entity name="AddToDefaultSetSortOrder2" type="ProductAttributeSet">
12+
<!-- This goes in CE repo -->
1213
<var key="attributeCode" entityKey="attribute_code" entityType="ProductAttribute"/>
1314
<data key="attributeSetId">4</data>
1415
<data key="attributeGroupId">7</data>

app/code/Magento/PageBuilder/Test/Mftf/Data/ProductsData.xml

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,23 @@
88

99
<entities xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
1010
xsi:noNamespaceSchemaLocation="urn:magento:mftf:DataGenerator/etc/dataProfileSchema.xsd">
11+
<!-- Conditions -->
12+
<entity name="PageBuilderProductsConditionCombination" type="pagebuilder_products_condition_types">
13+
<data key="name">Conditions Combination</data>
14+
<data key="value">Magento\CatalogWidget\Model\Rule\Condition\Combine</data>
15+
</entity>
16+
<entity name="PageBuilderProductsConditionCategory" type="pagebuilder_products_condition_types">
17+
<data key="name">Category</data>
18+
<data key="value">Magento\CatalogWidget\Model\Rule\Condition\Product|category_ids</data>
19+
</entity>
20+
<entity name="PageBuilderProductsConditionPrice" type="pagebuilder_products_condition_types">
21+
<data key="name">Price</data>
22+
<data key="value">Magento\CatalogWidget\Model\Rule\Condition\Product|price</data>
23+
</entity>
24+
<entity name="PageBuilderProductsConditionSKU" type="pagebuilder_products_condition_types">
25+
<data key="name">SKU</data>
26+
<data key="value">Magento\CatalogWidget\Model\Rule\Condition\Product|sku</data>
27+
</entity>
1128
<entity name="PageBuilderProductsCountPropertyOne" type="pagebuilder_content_type">
1229
<data key="name">Number of Products to Display</data>
1330
<data key="section">general</data>
@@ -26,7 +43,6 @@
2643
<data key="fieldName">products_count</data>
2744
<data key="value">999</data>
2845
</entity>
29-
3046
<entity name="PageBuilderProductsInvalidMinCountProperty" type="pagebuilder_content_type">
3147
<data key="name">Number of Products to Display</data>
3248
<data key="section">general</data>

app/code/Magento/PageBuilder/Test/Mftf/Section/PageBuilderProductsSection.xml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,17 @@
3838
<element name="padding" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'grid')])[{{arg1}}][contains(@style,'padding: {{arg2}}px;')]" parameterized="true"/>
3939
</section>
4040
<section name="ProductsContentTypeForm">
41+
<element name="conditionsListText" type="text" selector="//label[contains(@class,'admin__field-label')]//span[text()='Condition']"/>
4142
<element name="conditionsList" type="text" selector=".rule-param-children"/>
42-
<element name="conditionsListAddButton" type="button" selector=".rule-param-new-child img"/>
43-
<element name="conditionsListAddTypeSelect" type="select" selector=".rule-param-new-child select"/>
43+
<element name="conditionsListAddButton" type="button" selector="(//*[contains(@class,'rule-param-new-child')]//img)[{{arg1}}]" parameterized="true"/>
44+
<element name="conditionsListAddTypeSelect" type="select" selector="(//*[contains(@class,'rule-param-new-child')]//select)[{{arg1}}]" parameterized="true"/>
4445
<element name="conditionsListConditionPlaceholder" type="button" selector="//ul[contains(@class,'rule-param-children')]//a[text()='...']"/>
4546
<element name="conditionsListConditionInput" type="button" selector=".rule-param-edit input"/>
46-
<element name="conditionsListConditionApply" type="button" selector=".rule-param-apply img"/>
4747
<element name="conditionsListSavedValue" type="text" selector="//ul[contains(@class,'rule-param-children')]//li[{{arg1}}]//span[@class='rule-param'][{{arg2}}]/a" parameterized="true"/>
48+
<element name="conditionsCombinationAggregateSelector" type="button" selector="//ul[contains(@class,'rule-param-children')]//span[contains(@class,'rule-param')]//select[contains(@id,'1--{{arg1}}__aggregator')]/ancestor::span[contains(@class,'rule-param')]//a" parameterized="true"/>
49+
<element name="conditionsCombinationAggregateSelectorSelect" type="button" selector="//ul[contains(@class,'rule-param-children')]//span[contains(@class,'rule-param')]//select[contains(@id,'1--{{arg1}}__aggregator')]" parameterized="true"/>
50+
<element name="conditionsCombinationAggregateBooleanSelector" type="button" selector="//ul[contains(@class,'rule-param-children')]//span[contains(@class,'rule-param')]//select[contains(@id,'1--{{arg1}}__value')]/ancestor::span[contains(@class,'rule-param')]//a" parameterized="true"/>
51+
<element name="conditionsCombinationAggregateBooleanSelectorSelect" type="button" selector="//ul[contains(@class,'rule-param-children')]//span[contains(@class,'rule-param')]//select[contains(@id,'1--{{arg1}}__value')]" parameterized="true"/>
4852
<element name="productsCountInput" type="input" selector="input[name='products_count']"/>
4953
</section>
5054
<section name="ProductsOnStorefront">

app/code/Magento/PageBuilder/Test/Mftf/Test/AdminPageBuilderBlockTest.xml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1914,9 +1914,8 @@
19141914
<actionGroup ref="openPageBuilderEditPanel" stepKey="openEditAfterDrop">
19151915
<argument name="contentType" value="PageBuilderProductsContentType"/>
19161916
</actionGroup>
1917-
<actionGroup ref="addCategoryConditionToProductsBlock" stepKey="addCategory">
1918-
<argument name="page" value="ProductsContentTypeForm"/>
1919-
<argument name="category" value="$$createCategory.id$$"/>
1917+
<actionGroup ref="addConditionToProductConditions" stepKey="addCategory">
1918+
<argument name="conditionInput" value="$$createCategory.id$$"/>
19201919
</actionGroup>
19211920
<actionGroup ref="saveEditPanelSettings" stepKey="saveEditPanelSettings"/>
19221921
<actionGroup ref="validateProductCountInProducts" stepKey="validateProductsCountStage">

0 commit comments

Comments
 (0)