Skip to content

Commit 2ec1e9e

Browse files
author
Evgeniy Kolesov
committed
Merge remote-tracking branch 'origin/develop' into PR-0
2 parents 0c3369a + bd1c47b commit 2ec1e9e

File tree

12 files changed

+149
-14
lines changed

12 files changed

+149
-14
lines changed

app/code/Magento/Catalog/Model/Product/Gallery/ReadHandler.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public function execute($entityType, $product)
6262
}
6363
}
6464

65-
$value['images'][] = $mediaEntry;
65+
$value['images'][$mediaEntry['value_id']] = $mediaEntry;
6666
}
6767

6868
$product->setData(

app/code/Magento/Catalog/Setup/InstallSchema.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1233,6 +1233,15 @@ public function install(SchemaSetupInterface $setup, ModuleContextInterface $con
12331233
$installer->getIdxName('catalog_category_product', ['product_id']),
12341234
['product_id']
12351235
)
1236+
->addIndex(
1237+
$installer->getIdxName(
1238+
'catalog_category_product',
1239+
['category_id', 'product_id'],
1240+
\Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE
1241+
),
1242+
['category_id', 'product_id'],
1243+
['type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE]
1244+
)
12361245
->addForeignKey(
12371246
$installer->getFkName('catalog_category_product', 'product_id', 'catalog_product_entity', 'entity_id'),
12381247
'product_id',

app/code/Magento/Catalog/Setup/UpgradeSchema.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,30 @@ public function upgrade(SchemaSetupInterface $setup, ModuleContextInterface $con
2929
$this->removeGroupPrice($setup);
3030
}
3131

32+
if (version_compare($context->getVersion(), '2.0.6', '<')) {
33+
$this->addUniqueKeyToCategoryProductTable($setup);
34+
}
3235
$setup->endSetup();
3336
}
3437

38+
/**
39+
* @param SchemaSetupInterface $setup
40+
* @return void
41+
*/
42+
protected function addUniqueKeyToCategoryProductTable(SchemaSetupInterface $setup)
43+
{
44+
$setup->getConnection()->addIndex(
45+
$setup->getTable('catalog_category_product'),
46+
$setup->getIdxName(
47+
'catalog_category_product',
48+
['category_id', 'product_id'],
49+
\Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE
50+
),
51+
['category_id', 'product_id'],
52+
\Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE
53+
);
54+
}
55+
3556
/**
3657
*
3758
* @param SchemaSetupInterface $setup

app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/attribute/options.phtml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,14 +77,15 @@
7777
<?php
7878
$values = [];
7979
foreach($block->getOptionValues() as $value) {
80-
array_push($values, $value->getData());
80+
$value = $value->getData();
81+
$values[] = is_array($value) ? array_map("htmlspecialchars_decode", $value) : $value;
8182
}
8283
?>
8384
<script type="text/x-magento-init">
8485
{
8586
"*": {
8687
"Magento_Catalog/js/options": {
87-
"attributesData": <?php /* @escapeNotVerified */ echo json_encode($values); ?>,
88+
"attributesData": <?php /* @noEscape */ echo json_encode($values, JSON_HEX_QUOT); ?>,
8889
"isSortable": <?php echo (int)(!$block->getReadOnly() && !$block->canManageOptionDefaultOnly()) ?>,
8990
"isReadOnly": <?php echo (int)$block->getReadOnly(); ?>
9091
}

app/code/Magento/Catalog/view/adminhtml/web/js/product-gallery.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ define([
165165
imgElement;
166166

167167
imageData = $.extend({
168-
'file_id': Math.random().toString(33).substr(2, 18),
168+
'file_id': imageData.value_id ? imageData.value_id : Math.random().toString(33).substr(2, 18),
169169
'disabled': imageData.disabled ? imageData.disabled : 0,
170170
'position': count + 1,
171171
sizeLabel: bytesToSize(imageData.size)

app/code/Magento/Catalog/view/base/web/js/price-options.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ define([
1818
optionsSelector: '.product-custom-option',
1919
optionConfig: {},
2020
optionHandlers: {},
21-
optionTemplate: '<%- data.label %>' +
21+
optionTemplate: '<%= data.label %>' +
2222
'<% if (data.finalPrice.value) { %>' +
2323
' +<%- data.finalPrice.formatted %>' +
2424
'<% } %>',

app/code/Magento/CatalogInventory/Model/ResourceModel/Indexer/Stock/DefaultStock.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ protected function _getStockStatusSelect($entityIds = null, $usePrimaryTable = f
196196
)->columns(['qty' => new \Zend_Db_Expr('SUM(' . $qtyExpr . ')')])
197197
->where('cw.website_id != 0')
198198
->where('e.type_id = ?', $this->getTypeId())
199-
->group('e.entity_id');
199+
->group(['e.entity_id', 'cw.website_id']);
200200

201201
// add limitation of status
202202
$condition = $connection->quoteInto(

dev/tests/api-functional/testsuite/Magento/Catalog/Api/ProductAttributeMediaGalleryManagementInterfaceTest.php

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,8 @@ protected function getTargetSimpleProduct()
9999
protected function getTargetGalleryEntryId()
100100
{
101101
$mediaGallery = $this->getTargetSimpleProduct()->getData('media_gallery');
102-
return (int)$mediaGallery['images'][0]['value_id'];
102+
$image = array_shift($mediaGallery['images']);
103+
return (int)$image['value_id'];
103104
}
104105

105106
/**
@@ -126,7 +127,7 @@ public function testCreate()
126127
$mediaGallery = $targetProduct->getData('media_gallery');
127128

128129
$this->assertCount(1, $mediaGallery['images']);
129-
$updatedImage = $mediaGallery['images'][0];
130+
$updatedImage = array_shift($mediaGallery['images']);
130131
$this->assertEquals($actualResult, $updatedImage['value_id']);
131132
$this->assertEquals('Image Text', $updatedImage['label']);
132133
$this->assertEquals(1, $updatedImage['position']);
@@ -165,7 +166,7 @@ public function testCreateWithNotDefaultStoreId()
165166
$targetProduct = $this->getTargetSimpleProduct();
166167
$mediaGallery = $targetProduct->getData('media_gallery');
167168
$this->assertCount(1, $mediaGallery['images']);
168-
$updatedImage = $mediaGallery['images'][0];
169+
$updatedImage = array_shift($mediaGallery['images']);
169170
// Values for not default store view were provided
170171
$this->assertEquals('Image Text', $updatedImage['label']);
171172
$this->assertEquals($actualResult, $updatedImage['value_id']);
@@ -207,7 +208,7 @@ public function testUpdate()
207208
$this->assertNull($targetProduct->getData('small_image'));
208209
$mediaGallery = $targetProduct->getData('media_gallery');
209210
$this->assertCount(1, $mediaGallery['images']);
210-
$updatedImage = $mediaGallery['images'][0];
211+
$updatedImage = array_shift($mediaGallery['images']);
211212
$this->assertEquals('Updated Image Text', $updatedImage['label']);
212213
$this->assertEquals('/m/a/magento_image.jpg', $updatedImage['file']);
213214
$this->assertEquals(10, $updatedImage['position']);
@@ -245,7 +246,7 @@ public function testUpdateWithNotDefaultStoreId()
245246
$this->assertNull($targetProduct->getData('small_image'));
246247
$mediaGallery = $targetProduct->getData('media_gallery');
247248
$this->assertCount(1, $mediaGallery['images']);
248-
$updatedImage = $mediaGallery['images'][0];
249+
$updatedImage = array_shift($mediaGallery['images']);
249250
// Not default store view values were updated
250251
$this->assertEquals('Updated Image Text', $updatedImage['label']);
251252
$this->assertEquals('/m/a/magento_image.jpg', $updatedImage['file']);
@@ -406,7 +407,7 @@ public function testCreateThrowsExceptionIfProvidedImageNameContainsForbiddenCha
406407
public function testUpdateThrowsExceptionIfTargetProductDoesNotExist()
407408
{
408409
$this->updateServiceInfo['rest']['resourcePath'] = '/V1/products/wrong_product_sku/media'
409-
. '/' . $this->getTargetGalleryEntryId();
410+
. '/' . 'wrong-sku';
410411
$requestData = [
411412
'sku' => 'wrong_product_sku',
412413
'entry' => [

dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/NavigateRelatedProductsTest.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ public function test(
7070
$productsToVerify,
7171
CheckoutCart $checkoutCart
7272
) {
73-
$this->markTestIncomplete('MAGETWO-50178');
7473
// Preconditions
7574
$this->createProducts($products);
7675
$this->assignPromotedProducts($promotedProducts, 'related_products');

dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Repository/ConfigurableProduct.xml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,10 @@
128128
<field name="checkout_data" xsi:type="array">
129129
<item name="dataset" xsi:type="string">configurable_default</item>
130130
</field>
131+
<field name="price" xsi:type="array">
132+
<item name="value" xsi:type="string">40</item>
133+
<item name="dataset" xsi:type="string">price_40</item>
134+
</field>
131135
</dataset>
132136

133137
<dataset name="product_with_color_and_size">
@@ -156,6 +160,10 @@
156160
<field name="checkout_data" xsi:type="array">
157161
<item name="dataset" xsi:type="string">configurable_default</item>
158162
</field>
163+
<field name="price" xsi:type="array">
164+
<item name="value" xsi:type="string">40</item>
165+
<item name="dataset" xsi:type="string">price_40</item>
166+
</field>
159167
</dataset>
160168

161169
<dataset name="one_variation">
@@ -181,6 +189,10 @@
181189
<field name="attribute_set_id" xsi:type="array">
182190
<item name="dataset" xsi:type="string">default</item>
183191
</field>
192+
<field name="price" xsi:type="array">
193+
<item name="value" xsi:type="string">40</item>
194+
<item name="dataset" xsi:type="string">price_40</item>
195+
</field>
184196
</dataset>
185197

186198
<dataset name="not_virtual_for_type_switching">
@@ -238,6 +250,10 @@
238250
<field name="checkout_data" xsi:type="array">
239251
<item name="dataset" xsi:type="string">configurable_one_option</item>
240252
</field>
253+
<field name="price" xsi:type="array">
254+
<item name="value" xsi:type="string">40</item>
255+
<item name="dataset" xsi:type="string">price_40</item>
256+
</field>
241257
</dataset>
242258

243259
<dataset name="with_out_of_stock_item">
@@ -263,6 +279,10 @@
263279
<field name="attribute_set_id" xsi:type="array">
264280
<item name="dataset" xsi:type="string">default</item>
265281
</field>
282+
<field name="price" xsi:type="array">
283+
<item name="value" xsi:type="string">40</item>
284+
<item name="dataset" xsi:type="string">price_40</item>
285+
</field>
266286
</dataset>
267287

268288
<dataset name="two_options_with_fixed_price">
@@ -293,6 +313,10 @@
293313
<field name="checkout_data" xsi:type="array">
294314
<item name="dataset" xsi:type="string">configurable_two_options_with_fixed_price</item>
295315
</field>
316+
<field name="price" xsi:type="array">
317+
<item name="value" xsi:type="string">40</item>
318+
<item name="dataset" xsi:type="string">price_40</item>
319+
</field>
296320
</dataset>
297321

298322
<dataset name="two_variations_with_fixed_price">
@@ -316,6 +340,10 @@
316340
<field name="checkout_data" xsi:type="array">
317341
<item name="dataset" xsi:type="string">configurable_two_options_by_one_dollar</item>
318342
</field>
343+
<field name="price" xsi:type="array">
344+
<item name="value" xsi:type="string">40</item>
345+
<item name="dataset" xsi:type="string">price_40</item>
346+
</field>
319347
</dataset>
320348

321349
<dataset name="filterable_two_options_with_zero_price">
@@ -342,6 +370,10 @@
342370
<field name="attribute_set_id" xsi:type="array">
343371
<item name="dataset" xsi:type="string">custom_attribute_set</item>
344372
</field>
373+
<field name="price" xsi:type="array">
374+
<item name="value" xsi:type="string">40</item>
375+
<item name="dataset" xsi:type="string">price_40</item>
376+
</field>
345377
</dataset>
346378

347379
<dataset name="two_options_by_one_dollar">
@@ -372,6 +404,10 @@
372404
<field name="checkout_data" xsi:type="array">
373405
<item name="dataset" xsi:type="string">configurable_two_options_by_one_dollar</item>
374406
</field>
407+
<field name="price" xsi:type="array">
408+
<item name="value" xsi:type="string">40</item>
409+
<item name="dataset" xsi:type="string">price_40</item>
410+
</field>
375411
</dataset>
376412
</repository>
377413
</config>

0 commit comments

Comments
 (0)