Skip to content

Commit f8347e2

Browse files
committed
Merge branch 'MC-36787' into 2.4-bugfixes-121520
2 parents cfa2a19 + 07b84fe commit f8347e2

File tree

6 files changed

+128
-3
lines changed

6 files changed

+128
-3
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
</annotations>
1515
<click selector="{{AdminProductGridSection.bulkActionDropdown}}" stepKey="clickDropdown"/>
1616
<click selector="{{AdminProductGridSection.bulkActionOption('Update attributes')}}" stepKey="clickOption"/>
17-
<seeInCurrentUrl url="catalog/product_action_attribute/edit/" stepKey="seeInUrl"/>
17+
<waitForPageLoad stepKey="waitForBulkUpdatePage"/>
18+
<seeInCurrentUrl url="{{ProductAttributesEditPage.url}}" stepKey="seeInUrl"/>
1819
</actionGroup>
1920
</actionGroups>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
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+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
11+
<actionGroup name="AdminMassUpdateProductQtyIncrementsActionGroup">
12+
<arguments>
13+
<argument name="enableQtyIncrements" type="string" defaultValue="Yes"/>
14+
<argument name="qtyIncrements" type="string" defaultValue="2"/>
15+
</arguments>
16+
<click selector="{{AdminUpdateAttributesAdvancedInventorySection.inventory}}" stepKey="openInventoryTab"/>
17+
<checkOption selector="{{AdminUpdateAttributesAdvancedInventorySection.changeEnableQtyIncrements}}" stepKey="changeEnableQtyIncrements"/>
18+
<uncheckOption selector="{{AdminUpdateAttributesAdvancedInventorySection.useConfigEnableQtyIncrements}}" stepKey="uncheckUseConfigEnableQtyIncrements"/>
19+
<selectOption selector="{{AdminUpdateAttributesAdvancedInventorySection.enableQtyIncrements}}" userInput="{{enableQtyIncrements}}" stepKey="setEnableQtyIncrements"/>
20+
<checkOption selector="{{AdminUpdateAttributesAdvancedInventorySection.changeQtyIncrements}}" stepKey="changeQtyIncrements"/>
21+
<uncheckOption selector="{{AdminUpdateAttributesAdvancedInventorySection.useConfigQtyIncrements}}" stepKey="uncheckUseConfigQtyIncrements"/>
22+
<fillField selector="{{AdminUpdateAttributesAdvancedInventorySection.qtyIncrements}}" userInput="{{qtyIncrements}}" stepKey="setQtyIncrements"/>
23+
<click selector="{{AdminUpdateAttributesSection.saveButton}}" stepKey="save"/>
24+
<waitForElementVisible selector="{{AdminMessagesSection.success}}" stepKey="waitVisibleSuccessMessage"/>
25+
<see selector="{{AdminMessagesSection.success}}" userInput="Message is added to queue" stepKey="seeSuccessMessage"/>
26+
</actionGroup>
27+
</actionGroups>

app/code/Magento/Catalog/Test/Mftf/Section/AdminUpdateAttributesSection/AdminUpdateAttributesAdvancedInventorySection.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,11 @@
1313
<element name="qty" type="input" selector="#inventory_qty"/>
1414
<element name="changeStockAvailability" type="checkbox" selector="#inventory_stock_availability_checkbox"/>
1515
<element name="stockAvailability" type="select" selector="//select[@name='inventory[is_in_stock]']"/>
16+
<element name="enableQtyIncrements" type="select" selector="#inventory_enable_qty_increments"/>
17+
<element name="useConfigEnableQtyIncrements" type="checkbox" selector="#inventory_use_config_enable_qty_increments"/>
18+
<element name="changeEnableQtyIncrements" type="checkbox" selector="#inventory_enable_qty_increments_checkbox"/>
19+
<element name="qtyIncrements" type="input" selector="#inventory_qty_increments"/>
20+
<element name="useConfigQtyIncrements" type="checkbox" selector="#inventory_use_config_qty_increments"/>
21+
<element name="changeQtyIncrements" type="checkbox" selector="#inventory_qty_increments_checkbox"/>
1622
</section>
1723
</sections>
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
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="AdminMassUpdateProductQtyIncrementsTest">
12+
<annotations>
13+
<features value="Catalog"/>
14+
<stories value="Mass update advanced inventory attributes"/>
15+
<title value="Admin should be able to mass update product qty increments"/>
16+
<description value="Admin should be able to mass update product qty increments"/>
17+
<severity value="AVERAGE"/>
18+
<testCaseId value="MC-39359"/>
19+
<useCaseId value="MC-36787"/>
20+
<group value="catalog"/>
21+
<group value="CatalogInventory"/>
22+
<group value="product_attributes"/>
23+
</annotations>
24+
<before>
25+
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
26+
<createData entity="_defaultCategory" stepKey="createCategory"/>
27+
<createData entity="ApiSimpleProduct" stepKey="createProductOne">
28+
<requiredEntity createDataKey="createCategory"/>
29+
</createData>
30+
<createData entity="ApiSimpleProduct" stepKey="createProductTwo">
31+
<requiredEntity createDataKey="createCategory"/>
32+
</createData>
33+
</before>
34+
<after>
35+
<deleteData createDataKey="createProductOne" stepKey="deleteProductOne"/>
36+
<deleteData createDataKey="createProductTwo" stepKey="deleteProductTwo"/>
37+
<deleteData createDataKey="createCategory" stepKey="deleteCategory"/>
38+
<actionGroup ref="ClearProductsFilterActionGroup" stepKey="clearProductFilter"/>
39+
<actionGroup ref="AdminLogoutActionGroup" stepKey="amOnLogoutPage"/>
40+
</after>
41+
<!-- Navigate to products list page and select created products -->
42+
<actionGroup ref="AdminOpenProductIndexPageActionGroup" stepKey="navigateToProductIndex"/>
43+
<actionGroup ref="SearchProductGridByKeyword2ActionGroup" stepKey="searchByKeyword">
44+
<argument name="keyword" value="api-simple-product"/>
45+
</actionGroup>
46+
<actionGroup ref="SortProductsByIdDescendingActionGroup" stepKey="sortProductsByIdDescending"/>
47+
<click selector="{{AdminProductGridSection.productGridCheckboxOnRow('1')}}" stepKey="clickCheckbox1"/>
48+
<click selector="{{AdminProductGridSection.productGridCheckboxOnRow('2')}}" stepKey="clickCheckbox2"/>
49+
<!-- Mass update qty increments -->
50+
<actionGroup ref="AdminClickMassUpdateProductAttributesActionGroup" stepKey="clickMassUpdateProductAttributes"/>
51+
<actionGroup ref="AdminMassUpdateProductQtyIncrementsActionGroup" stepKey="updateQtyIncrements">
52+
<argument name="enableQtyIncrements" value="Yes"/>
53+
<argument name="qtyIncrements" value="2"/>
54+
</actionGroup>
55+
<!-- Start message queue for product attribute consumer -->
56+
<actionGroup ref="CliConsumerStartActionGroup" stepKey="startMessageQueue">
57+
<argument name="consumerName" value="{{AdminProductAttributeUpdateMessageConsumerData.consumerName}}"/>
58+
<argument name="maxMessages" value="{{AdminProductAttributeUpdateMessageConsumerData.messageLimit}}"/>
59+
</actionGroup>
60+
<!-- Open first product for edit and assert that qty increment is updated -->
61+
<actionGroup ref="AdminProductPageOpenByIdActionGroup" stepKey="goToProductEditPage">
62+
<argument name="productId" value="$createProductOne.id$"/>
63+
</actionGroup>
64+
<waitForPageLoad stepKey="waitForProductPageLoad"/>
65+
<actionGroup ref="AdminClickOnAdvancedInventoryLinkActionGroup" stepKey="clickOnAdvancedInventoryLink"/>
66+
<seeOptionIsSelected selector="{{AdminProductFormAdvancedInventorySection.enableQtyIncrements}}" userInput="Yes" stepKey="assertEnableQtyIncrementsValue"/>
67+
<dontSeeCheckboxIsChecked selector="{{AdminProductFormAdvancedInventorySection.enableQtyIncrementsUseConfigSettings}}" stepKey="assertEnableQtyIncrementsUseConfigSettings"/>
68+
<seeInField selector="{{AdminProductFormAdvancedInventorySection.qtyIncrements}}" userInput="2" stepKey="assertQtyIncrementsValue"/>
69+
<dontSeeCheckboxIsChecked selector="{{AdminProductFormAdvancedInventorySection.qtyIncrementsUseConfigSettings}}" stepKey="assertQtyIncrementsUseConfigSettings"/>
70+
<!-- Open second product for edit and assert that qty increment is updated -->
71+
<actionGroup ref="AdminProductPageOpenByIdActionGroup" stepKey="goToProductEditPage2">
72+
<argument name="productId" value="$createProductTwo.id$"/>
73+
</actionGroup>
74+
<waitForPageLoad stepKey="waitForProductPageLoad2"/>
75+
<actionGroup ref="AdminClickOnAdvancedInventoryLinkActionGroup" stepKey="clickOnAdvancedInventoryLink2"/>
76+
<seeOptionIsSelected selector="{{AdminProductFormAdvancedInventorySection.enableQtyIncrements}}" userInput="Yes" stepKey="assertEnableQtyIncrementsValue2"/>
77+
<dontSeeCheckboxIsChecked selector="{{AdminProductFormAdvancedInventorySection.enableQtyIncrementsUseConfigSettings}}" stepKey="assertEnableQtyIncrementsUseConfigSettings2"/>
78+
<seeInField selector="{{AdminProductFormAdvancedInventorySection.qtyIncrements}}" userInput="2" stepKey="assertQtyIncrementsValue2"/>
79+
<dontSeeCheckboxIsChecked selector="{{AdminProductFormAdvancedInventorySection.qtyIncrementsUseConfigSettings}}" stepKey="assertQtyIncrementsUseConfigSettings2"/>
80+
</test>
81+
</tests>

app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/edit/action/inventory.phtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ if (!is_numeric($defaultMinSaleQty)) {
334334
</div>
335335
<div class="field choice">
336336
<input type="checkbox" id="inventory_use_config_enable_qty_increments"
337-
name="<?= /* @noEscape */ $block->getFieldSuffix() ?>[use_config_enable_qty_increments]"
337+
name="<?= /* @noEscape */ $block->getFieldSuffix() ?>[use_config_enable_qty_inc]"
338338
value="1"
339339
data-role="toggle-editability"
340340
checked="checked"

app/code/Magento/CatalogInventory/Plugin/MassUpdateProductAttribute.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,14 @@ class MassUpdateProductAttribute
6464
* @var ProductRepositoryInterface
6565
*/
6666
private $productRepository;
67+
68+
/**
69+
* @var array
70+
*/
71+
private $useConfigFieldMap = [
72+
'enable_qty_increments' => 'use_config_enable_qty_inc'
73+
];
74+
6775
/**
6876
* @param \Magento\CatalogInventory\Model\Indexer\Stock\Processor $stockIndexerProcessor
6977
* @param \Magento\Framework\Api\DataObjectHelper $dataObjectHelper
@@ -146,7 +154,9 @@ private function addConfigSettings($inventoryData)
146154
{
147155
$options = $this->stockConfiguration->getConfigItemOptions();
148156
foreach ($options as $option) {
149-
$useConfig = 'use_config_' . $option;
157+
$useConfig = isset($this->useConfigFieldMap[$option])
158+
? $this->useConfigFieldMap[$option]
159+
: 'use_config_' . $option;
150160
if (isset($inventoryData[$option]) && !isset($inventoryData[$useConfig])) {
151161
$inventoryData[$useConfig] = 0;
152162
}

0 commit comments

Comments
 (0)