Skip to content

Commit e4d2bbe

Browse files
committed
MAGETWO-52172: [TD] "Use default value" checkbox is missing for Custom Options on product form
1 parent f8e32a1 commit e4d2bbe

File tree

2 files changed

+68
-21
lines changed
  • app/code/Magento/Catalog
    • Controller/Adminhtml/Product/Initialization
    • Test/Unit/Controller/Adminhtml/Product/Initialization

2 files changed

+68
-21
lines changed

app/code/Magento/Catalog/Controller/Adminhtml/Product/Initialization/Helper.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -156,14 +156,12 @@ public function initializeFromData(\Magento\Catalog\Model\Product $product, arra
156156

157157
$inputFilter = new \Zend_Filter_Input($dateFieldFilters, [], $productData);
158158
$productData = $inputFilter->getUnescaped();
159-
$productOptions = [];
160159

161160
if (isset($productData['options'])) {
162-
foreach ($productData['options'] as $option) {
163-
$productOptions[$option['option_id']] = $option;
164-
}
165-
161+
$productOptions = $productData['options'];
166162
unset($productData['options']);
163+
} else {
164+
$productOptions = [];
167165
}
168166

169167
$product->addData($productData);
@@ -317,11 +315,13 @@ public function mergeProductOptions($productOptions, $overwriteOptions)
317315
return $productOptions;
318316
}
319317

320-
foreach ($productOptions as $optionId => $option) {
318+
foreach ($productOptions as $index => $option) {
319+
$optionId = $option['option_id'];
320+
321321
if (isset($overwriteOptions[$optionId])) {
322322
foreach ($overwriteOptions[$optionId] as $fieldName => $overwrite) {
323323
if (!empty($overwrite) && isset($option[$fieldName]) && isset($option['default_' . $fieldName])) {
324-
$productOptions[$optionId][$fieldName] = $option['default_' . $fieldName];
324+
$productOptions[$index][$fieldName] = $option['default_' . $fieldName];
325325
}
326326
}
327327
}

app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/Initialization/HelperTest.php

Lines changed: 61 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -212,8 +212,8 @@ public function testInitialize()
212212
->method('setOptionId');
213213

214214
$optionsData = [
215-
'option1' => ['option_id' => 1, 'is_delete' => true, 'name' => 'name1', 'price' => 'price1'],
216-
'option2' => ['option_id' => 2, 'is_delete' => false, 'name' => 'name1', 'price' => 'price1'],
215+
'option1' => ['is_delete' => true, 'name' => 'name1', 'price' => 'price1'],
216+
'option2' => ['is_delete' => false, 'name' => 'name1', 'price' => 'price1'],
217217
];
218218
$productData = [
219219
'stock_data' => ['stock_data'],
@@ -326,25 +326,72 @@ public function testInitialize()
326326
public function mergeProductOptionsDataProvider()
327327
{
328328
return [
329-
[
329+
'options are not array, empty array is returned' => [
330330
null,
331331
[],
332332
[],
333333
],
334-
[
335-
['key' => 'val'],
334+
'replacement is not array, original options are returned' => [
335+
['val'],
336336
null,
337-
['key' => 'val'],
337+
['val'],
338338
],
339-
[
340-
['key' => ['key1' => 'val1', 'key2' => 'val2', 'default_key' => 'val3', 'default_key2' => 'val4']],
341-
['key' => ['key1' => '0', 'key2' => '1']],
342-
['key' => ['key1' => 'val1', 'key2' => 'val4', 'default_key' => 'val3', 'default_key2' => 'val4']],
339+
'ids do not match, no replacement occurs' => [
340+
[
341+
[
342+
'option_id' => '3',
343+
'key1' => 'val1',
344+
'default_key1' => 'val2'
345+
]
346+
],
347+
[4 => ['key1' => '1']],
348+
[
349+
[
350+
'option_id' => '3',
351+
'key1' => 'val1',
352+
'default_key1' => 'val2'
353+
]
354+
]
343355
],
344-
[
345-
['key' => ['key1' => 'val1', 'key2' => 'val2', 'default_key1' => 'val3']],
346-
['key' => ['key1' => '1', 'key2' => '1']],
347-
['key' => ['key1' => 'val3', 'key2' => 'val2', 'default_key1' => 'val3']],
356+
'key2 is replaced, key1 is not (checkbox is not checked)' => [
357+
[
358+
[
359+
'option_id' => '5',
360+
'key1' => 'val1',
361+
'key2' => 'val2',
362+
'default_key1' => 'val3',
363+
'default_key2' => 'val4'
364+
]
365+
],
366+
[5 => ['key1' => '0', 'key2' => '1']],
367+
[
368+
[
369+
'option_id' => '5',
370+
'key1' => 'val1',
371+
'key2' => 'val4',
372+
'default_key1' => 'val3',
373+
'default_key2' => 'val4'
374+
]
375+
]
376+
],
377+
'key1 is replaced, key2 has no default value' => [
378+
[
379+
[
380+
'option_id' => '7',
381+
'key1' => 'val1',
382+
'key2' => 'val2',
383+
'default_key1' => 'val3'
384+
]
385+
],
386+
[7 => ['key1' => '1', 'key2' => '1']],
387+
[
388+
[
389+
'option_id' => '7',
390+
'key1' => 'val3',
391+
'key2' => 'val2',
392+
'default_key1' => 'val3'
393+
]
394+
],
348395
],
349396
];
350397
}

0 commit comments

Comments
 (0)