Skip to content

Commit be7ac9d

Browse files
authored
Merge pull request #3364 from magento-honey-badgers/2.3.0-qwerty-bugs
Sync qwerty with 2.3.0-release
2 parents caef945 + 43ea5e4 commit be7ac9d

File tree

6 files changed

+130
-19
lines changed

6 files changed

+130
-19
lines changed

app/code/Magento/Catalog/Model/Indexer/Category/Flat/Action/Full.php

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
*/
66
namespace Magento\Catalog\Model\Indexer\Category\Flat\Action;
77

8+
/**
9+
* Class for full reindex flat categories
10+
*/
811
class Full extends \Magento\Catalog\Model\Indexer\Category\Flat\AbstractAction
912
{
1013
/**
@@ -92,6 +95,7 @@ protected function populateFlatTables(array $stores)
9295

9396
/**
9497
* Create table and add attributes as fields for specified store.
98+
*
9599
* This routine assumes that DDL operations are allowed
96100
*
97101
* @param int $store
@@ -109,6 +113,7 @@ protected function createTable($store)
109113

110114
/**
111115
* Create category flat tables and add attributes as fields.
116+
*
112117
* Tables are created only if DDL operations are allowed
113118
*
114119
* @param \Magento\Store\Model\Store[] $stores if empty, create tables for all stores of the application
@@ -167,6 +172,44 @@ protected function switchTables(array $stores = [])
167172
return $this;
168173
}
169174

175+
/**
176+
* Retrieve all actual Catalog Product Flat Table names
177+
*
178+
* @return string[]
179+
*/
180+
private function getActualStoreTablesForCategoryFlat(): array
181+
{
182+
$actualStoreTables = [];
183+
foreach ($this->storeManager->getStores() as $store) {
184+
$actualStoreTables[] = sprintf(
185+
'%s_store_%s',
186+
$this->connection->getTableName('catalog_category_flat'),
187+
$store->getId()
188+
);
189+
}
190+
191+
return $actualStoreTables;
192+
}
193+
194+
/**
195+
* Delete all category flat tables for not existing stores
196+
*
197+
* @return void
198+
*/
199+
private function deleteAbandonedStoreCategoryFlatTables(): void
200+
{
201+
$existentTables = $this->connection->getTables(
202+
$this->connection->getTableName('catalog_category_flat_store_%')
203+
);
204+
$actualStoreTables = $this->getActualStoreTablesForCategoryFlat();
205+
206+
$tablesToDelete = array_diff($existentTables, $actualStoreTables);
207+
208+
foreach ($tablesToDelete as $table) {
209+
$this->connection->dropTable($table);
210+
}
211+
}
212+
170213
/**
171214
* Transactional rebuild flat data from eav
172215
*
@@ -182,7 +225,7 @@ public function reindexAll()
182225
$stores = $this->storeManager->getStores();
183226
$this->populateFlatTables($stores);
184227
$this->switchTables($stores);
185-
228+
$this->deleteAbandonedStoreCategoryFlatTables();
186229
$this->allowTableChanges = true;
187230

188231
return $this;

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

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
<?php
22
/**
3-
*
43
* Copyright © Magento, Inc. All rights reserved.
54
* See COPYING.txt for license details.
65
*/
76

87
namespace Magento\Catalog\Model\Product\Gallery;
98

109
use Magento\Catalog\Api\Data\ProductAttributeMediaGalleryEntryInterface;
11-
use Magento\Catalog\Api\Data\ProductInterface as Product;
1210
use Magento\Framework\Exception\InputException;
1311
use Magento\Framework\Exception\NoSuchEntityException;
1412
use Magento\Framework\Exception\StateException;
1513
use Magento\Framework\Api\ImageContentValidatorInterface;
1614

1715
/**
16+
* Class GalleryManagement
17+
*
18+
* Provides implementation of api interface ProductAttributeMediaGalleryManagementInterface
19+
*
1820
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
1921
*/
2022
class GalleryManagement implements \Magento\Catalog\Api\ProductAttributeMediaGalleryManagementInterface
@@ -44,7 +46,7 @@ public function __construct(
4446
}
4547

4648
/**
47-
* {@inheritdoc}
49+
* @inheritdoc
4850
*/
4951
public function create($sku, ProductAttributeMediaGalleryEntryInterface $entry)
5052
{
@@ -54,7 +56,7 @@ public function create($sku, ProductAttributeMediaGalleryEntryInterface $entry)
5456
if (!$this->contentValidator->isValid($entryContent)) {
5557
throw new InputException(__('The image content is invalid. Verify the content and try again.'));
5658
}
57-
$product = $this->productRepository->get($sku);
59+
$product = $this->productRepository->get($sku, true);
5860

5961
$existingMediaGalleryEntries = $product->getMediaGalleryEntries();
6062
$existingEntryIds = [];
@@ -84,11 +86,11 @@ public function create($sku, ProductAttributeMediaGalleryEntryInterface $entry)
8486
}
8587

8688
/**
87-
* {@inheritdoc}
89+
* @inheritdoc
8890
*/
8991
public function update($sku, ProductAttributeMediaGalleryEntryInterface $entry)
9092
{
91-
$product = $this->productRepository->get($sku);
93+
$product = $this->productRepository->get($sku, true);
9294
$existingMediaGalleryEntries = $product->getMediaGalleryEntries();
9395
if ($existingMediaGalleryEntries == null) {
9496
throw new NoSuchEntityException(
@@ -125,11 +127,11 @@ public function update($sku, ProductAttributeMediaGalleryEntryInterface $entry)
125127
}
126128

127129
/**
128-
* {@inheritdoc}
130+
* @inheritdoc
129131
*/
130132
public function remove($sku, $entryId)
131133
{
132-
$product = $this->productRepository->get($sku);
134+
$product = $this->productRepository->get($sku, true);
133135
$existingMediaGalleryEntries = $product->getMediaGalleryEntries();
134136
if ($existingMediaGalleryEntries == null) {
135137
throw new NoSuchEntityException(
@@ -155,7 +157,7 @@ public function remove($sku, $entryId)
155157
}
156158

157159
/**
158-
* {@inheritdoc}
160+
* @inheritdoc
159161
*/
160162
public function get($sku, $entryId)
161163
{
@@ -176,7 +178,7 @@ public function get($sku, $entryId)
176178
}
177179

178180
/**
179-
* {@inheritdoc}
181+
* @inheritdoc
180182
*/
181183
public function getList($sku)
182184
{

app/code/Magento/Review/Model/ResourceModel/Review/Product/Collection.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,6 @@ public function getResultingIds()
406406
$idsSelect->reset(Select::LIMIT_COUNT);
407407
$idsSelect->reset(Select::LIMIT_OFFSET);
408408
$idsSelect->reset(Select::COLUMNS);
409-
$idsSelect->reset(Select::ORDER);
410409
$idsSelect->columns('rt.review_id');
411410
return $this->getConnection()->fetchCol($idsSelect);
412411
}

dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/ProductViewTest.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,6 @@ public function testQueryAllFieldsSimpleProduct()
285285
*/
286286
public function testQueryMediaGalleryEntryFieldsSimpleProduct()
287287
{
288-
$this->markTestSkipped("Skipped until ticket MAGETWO-90021 is resolved.");
289288
$productSku = 'simple';
290289

291290
$query = <<<QUERY
@@ -484,7 +483,7 @@ public function testQueryMediaGalleryEntryFieldsSimpleProduct()
484483
QUERY;
485484

486485
$response = $this->graphQlQuery($query);
487-
486+
488487
/**
489488
* @var ProductRepositoryInterface $productRepository
490489
*/

dev/tests/integration/testsuite/Magento/Review/Model/ResourceModel/Review/Product/CollectionTest.php

Lines changed: 72 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,88 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
7+
68
namespace Magento\Review\Model\ResourceModel\Review\Product;
79

10+
/**
11+
* Tests some functionality of the Product Review collection
12+
*/
813
class CollectionTest extends \PHPUnit\Framework\TestCase
914
{
1015
/**
16+
* @param string $status
17+
* @param int $expectedCount
18+
* @param string $sortAttribute
19+
* @param string $dir
20+
* @param callable $assertion
21+
* @dataProvider sortOrderAssertionsDataProvider
1122
* @magentoDataFixture Magento/Review/_files/different_reviews.php
1223
*/
13-
public function testGetResultingIds()
14-
{
24+
public function testGetResultingIds(
25+
?string $status,
26+
int $expectedCount,
27+
string $sortAttribute,
28+
string $dir,
29+
callable $assertion
30+
) {
31+
/**
32+
* @var $collection \Magento\Review\Model\ResourceModel\Review\Product\Collection
33+
*/
1534
$collection = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
1635
\Magento\Review\Model\ResourceModel\Review\Product\Collection::class
1736
);
18-
$collection->addStatusFilter(\Magento\Review\Model\Review::STATUS_APPROVED);
37+
if ($status) {
38+
$collection->addStatusFilter($status);
39+
}
40+
$collection->setOrder($sortAttribute, $dir);
1941
$actual = $collection->getResultingIds();
20-
$this->assertCount(2, $actual);
42+
$this->assertCount($expectedCount, $actual);
43+
$assertion($actual);
44+
}
45+
46+
/**
47+
* @return array
48+
*/
49+
public function sortOrderAssertionsDataProvider() :array
50+
{
51+
return [
52+
[
53+
\Magento\Review\Model\Review::STATUS_APPROVED,
54+
2,
55+
'rt.review_id',
56+
'DESC',
57+
function (array $actual) :void {
58+
$this->assertLessThan($actual[0], $actual[1]);
59+
}
60+
],
61+
[
62+
\Magento\Review\Model\Review::STATUS_APPROVED,
63+
2,
64+
'rt.review_id',
65+
'ASC',
66+
function (array $actual) :void {
67+
$this->assertLessThan($actual[1], $actual[0]);
68+
}
69+
],
70+
[
71+
\Magento\Review\Model\Review::STATUS_APPROVED,
72+
2,
73+
'rt.created_at',
74+
'ASC',
75+
function (array $actual) :void {
76+
$this->assertLessThan($actual[1], $actual[0]);
77+
}
78+
],
79+
[
80+
null,
81+
3,
82+
'rt.review_id',
83+
'ASC',
84+
function (array $actual) :void {
85+
$this->assertLessThan($actual[1], $actual[0]);
86+
}
87+
]
88+
];
2189
}
2290
}

lib/web/mage/adminhtml/wysiwyg/tiny_mce/setup.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ define([
3030

3131
_.bindAll(this, 'openFileBrowser');
3232

33-
config = Object.assign({}, baseConfig, config || {});
33+
config = _.extend({}, baseConfig, config || {});
3434
this.wysiwygInstance = new WysiwygInstancePrototype(htmlId, config);
3535
this.wysiwygInstance.eventBus = this.eventBus = new window.varienEvents();
3636
},

0 commit comments

Comments
 (0)