Skip to content

Commit 5e15535

Browse files
author
Yurii Hryhoriev
committed
MAGETWO-47698: [Github] Custom options not displayed correctly on a store view level #2908 #5885
- tests stabilization
1 parent 7a541a0 commit 5e15535

File tree

4 files changed

+50
-30
lines changed

4 files changed

+50
-30
lines changed

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

+3-1
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,9 @@ private function overwriteValue($optionId, $option, $overwriteOptions)
348348
foreach ($overwriteOptions[$optionId] as $fieldName => $overwrite) {
349349
if ($overwrite && isset($option[$fieldName]) && isset($option['default_' . $fieldName])) {
350350
$option[$fieldName] = $option['default_' . $fieldName];
351-
$option['is_delete_store_title'] = 1;
351+
if ('title' == $fieldName) {
352+
$option['is_delete_store_title'] = 1;
353+
}
352354
}
353355
}
354356
}

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

+15-11
Original file line numberDiff line numberDiff line change
@@ -360,9 +360,9 @@ public function mergeProductOptionsDataProvider()
360360
[
361361
'option_id' => '5',
362362
'key1' => 'val1',
363-
'key2' => 'val2',
363+
'title' => 'val2',
364364
'default_key1' => 'val3',
365-
'default_key2' => 'val4',
365+
'default_title' => 'val4',
366366
'values' => [
367367
[
368368
'option_type_id' => '2',
@@ -377,17 +377,18 @@ public function mergeProductOptionsDataProvider()
377377
[
378378
5 => [
379379
'key1' => '0',
380-
'key2' => '1',
380+
'title' => '1',
381381
'values' => [2 => ['key1' => 1]]
382382
]
383383
],
384384
[
385385
[
386386
'option_id' => '5',
387387
'key1' => 'val1',
388-
'key2' => 'val4',
388+
'title' => 'val4',
389389
'default_key1' => 'val3',
390-
'default_key2' => 'val4',
390+
'default_title' => 'val4',
391+
'is_delete_store_title' => 1,
391392
'values' => [
392393
[
393394
'option_type_id' => '2',
@@ -411,8 +412,9 @@ public function mergeProductOptionsDataProvider()
411412
[
412413
'option_type_id' => '2',
413414
'key1' => 'val1',
414-
'key2' => 'val2',
415-
'default_key1' => 'val11'
415+
'title' => 'val2',
416+
'default_key1' => 'val11',
417+
'default_title' => 'val22'
416418
]
417419
]
418420
]
@@ -421,7 +423,7 @@ public function mergeProductOptionsDataProvider()
421423
7 => [
422424
'key1' => '1',
423425
'key2' => '1',
424-
'values' => [2 => ['key1' => 1, 'key2' => 1]]
426+
'values' => [2 => ['key1' => 0, 'title' => 1]]
425427
]
426428
],
427429
[
@@ -433,9 +435,11 @@ public function mergeProductOptionsDataProvider()
433435
'values' => [
434436
[
435437
'option_type_id' => '2',
436-
'key1' => 'val11',
437-
'key2' => 'val2',
438-
'default_key1' => 'val11'
438+
'key1' => 'val1',
439+
'title' => 'val22',
440+
'default_key1' => 'val11',
441+
'default_title' => 'val22',
442+
'is_delete_store_title' => 1
439443
]
440444
]
441445
]

app/code/Magento/Catalog/Test/Unit/Ui/DataProvider/Product/Form/Modifier/CustomOptionsTest.php

+28-16
Original file line numberDiff line numberDiff line change
@@ -87,35 +87,47 @@ public function testModifyData()
8787

8888
$originalData = [
8989
$productId => [
90-
\Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\CustomOptions::DATA_SOURCE_DEFAULT => [
90+
CustomOptions::DATA_SOURCE_DEFAULT => [
9191
'title' => 'original'
9292
]
9393
]
9494
];
9595

9696
$options = [
97-
$this->getProductOptionMock(['title' => 'option1']),
97+
$this->getProductOptionMock(['title' => 'option1', 'store_title' => 'Option Store Title']),
9898
$this->getProductOptionMock(
99-
['title' => 'option2'],
99+
['title' => 'option2', 'store_title' => null],
100100
[
101-
$this->getProductOptionMock(['title' => 'value1']),
102-
$this->getProductOptionMock(['title' => 'value2'])
101+
$this->getProductOptionMock(['title' => 'value1', 'store_title' => 'Option Value Store Title']),
102+
$this->getProductOptionMock(['title' => 'value2', 'store_title' => null])
103103
]
104104
)
105105
];
106106

107107
$resultData = [
108108
$productId => [
109-
\Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\CustomOptions::DATA_SOURCE_DEFAULT => [
110-
'title' => 'original',
111-
\Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\CustomOptions::FIELD_ENABLE => 1,
112-
\Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\CustomOptions::GRID_OPTIONS_NAME => [
113-
['title' => 'option1'],
109+
CustomOptions::DATA_SOURCE_DEFAULT => [
110+
CustomOptions::FIELD_TITLE_NAME => 'original',
111+
CustomOptions::FIELD_ENABLE => 1,
112+
CustomOptions::GRID_OPTIONS_NAME => [
114113
[
115-
'title' => 'option2',
114+
CustomOptions::FIELD_TITLE_NAME => 'option1',
115+
CustomOptions::FIELD_STORE_TITLE_NAME => 'Option Store Title',
116+
CustomOptions::FIELD_IS_USE_DEFAULT => false
117+
], [
118+
CustomOptions::FIELD_TITLE_NAME => 'option2',
119+
CustomOptions::FIELD_STORE_TITLE_NAME => null,
120+
CustomOptions::FIELD_IS_USE_DEFAULT => true,
116121
CustomOptions::GRID_TYPE_SELECT_NAME => [
117-
['title' => 'value1'],
118-
['title' => 'value2']
122+
[
123+
CustomOptions::FIELD_TITLE_NAME => 'value1',
124+
CustomOptions::FIELD_STORE_TITLE_NAME => 'Option Value Store Title',
125+
CustomOptions::FIELD_IS_USE_DEFAULT => false
126+
], [
127+
CustomOptions::FIELD_TITLE_NAME => 'value2',
128+
CustomOptions::FIELD_STORE_TITLE_NAME => null,
129+
CustomOptions::FIELD_IS_USE_DEFAULT => true
130+
]
119131
]
120132
]
121133
]
@@ -154,13 +166,13 @@ public function testModifyMeta()
154166
*/
155167
protected function getProductOptionMock(array $data, array $values = [])
156168
{
169+
/** @var ProductOption|\PHPUnit_Framework_MockObject_MockObject $productOptionMock */
157170
$productOptionMock = $this->getMockBuilder(ProductOption::class)
158171
->disableOriginalConstructor()
172+
->setMethods(['getValues'])
159173
->getMock();
160174

161-
$productOptionMock->expects($this->any())
162-
->method('getData')
163-
->willReturn($data);
175+
$productOptionMock->setData($data);
164176
$productOptionMock->expects($this->any())
165177
->method('getValues')
166178
->willReturn($values);

app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/CustomOptions.php

+4-2
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ class CustomOptions extends AbstractModifier
6868
const FIELD_ENABLE = 'affect_product_custom_options';
6969
const FIELD_OPTION_ID = 'option_id';
7070
const FIELD_TITLE_NAME = 'title';
71+
const FIELD_STORE_TITLE_NAME = 'store_title';
7172
const FIELD_TYPE_NAME = 'type';
7273
const FIELD_IS_REQUIRE_NAME = 'is_require';
7374
const FIELD_SORT_ORDER_NAME = 'sort_order';
@@ -79,6 +80,7 @@ class CustomOptions extends AbstractModifier
7980
const FIELD_IMAGE_SIZE_X_NAME = 'image_size_x';
8081
const FIELD_IMAGE_SIZE_Y_NAME = 'image_size_y';
8182
const FIELD_IS_DELETE = 'is_delete';
83+
const FIELD_IS_USE_DEFAULT = 'is_use_default';
8284
/**#@-*/
8385

8486
/**#@+
@@ -163,12 +165,12 @@ public function modifyData(array $data)
163165
/** @var \Magento\Catalog\Model\Product\Option $option */
164166
foreach ($productOptions as $index => $option) {
165167
$optionData = $option->getData();
166-
$optionData['is_use_default'] = !$option->getData('store_title');
168+
$optionData[static::FIELD_IS_USE_DEFAULT] = !$option->getData(static::FIELD_STORE_TITLE_NAME);
167169
$options[$index] = $this->formatPriceByPath(static::FIELD_PRICE_NAME, $optionData);
168170
$values = $option->getValues() ?: [];
169171

170172
foreach ($values as $value) {
171-
$value->setData('is_use_default', !$value->getData('store_title'));
173+
$value->setData(static::FIELD_IS_USE_DEFAULT, !$value->getData(static::FIELD_STORE_TITLE_NAME));
172174
}
173175
/** @var \Magento\Catalog\Model\Product\Option $value */
174176
foreach ($values as $value) {

0 commit comments

Comments
 (0)