Skip to content

Commit 0d3e766

Browse files
committed
MAGETWO-67087: Saving category deletes url-rewrites for products in anchor categories
1 parent df25d4a commit 0d3e766

File tree

2 files changed

+18
-16
lines changed

2 files changed

+18
-16
lines changed

app/code/Magento/CatalogUrlRewrite/Model/Product/CurrentUrlRewritesRegenerator.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,12 @@ public function generate($storeId, Product $product, ObjectRegistry $productCate
131131
* @param int|null $rootCategoryId
132132
* @return UrlRewrite[]
133133
*/
134-
public function generateAnchor($storeId, Product $product, ObjectRegistry $productCategories, $rootCategoryId = null)
135-
{
134+
public function generateAnchor(
135+
$storeId,
136+
Product $product,
137+
ObjectRegistry $productCategories,
138+
$rootCategoryId = null
139+
) {
136140
$anchorCategoryIds = [];
137141
$mergeDataProvider = clone $this->mergeDataProviderPrototype;
138142

@@ -154,8 +158,8 @@ public function generateAnchor($storeId, Product $product, ObjectRegistry $produ
154158
if (in_array($category->getId(), $anchorCategoryIds)) {
155159
$mergeDataProvider->merge(
156160
$currentUrlRewrite->getIsAutogenerated()
157-
? $this->generateForAutogenerated($currentUrlRewrite, $storeId, $category, $product)
158-
: $this->generateForCustom($currentUrlRewrite, $storeId, $category, $product)
161+
? $this->generateForAutogenerated($currentUrlRewrite, $storeId, $category, $product)
162+
: $this->generateForCustom($currentUrlRewrite, $storeId, $category, $product)
159163
);
160164
}
161165
}

dev/tests/integration/testsuite/Magento/CatalogUrlRewrite/Model/CategoryUrlRewriteGeneratorTest.php

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,11 @@ public function testGenerateUrlRewritesWithoutSaveHistory()
5252

5353
$this->assertResults($categoryExpectedResult, $actualResults);
5454

55-
$productIds = [];
56-
foreach ($category->getProductCollection() as $product) {
57-
$productIds = $product->getId();
58-
}
59-
$this->assertTrue(isset($productIds[0]), 'Product for testing does not exist');
60-
$productForTest = $productIds[0];
55+
/** @var \Magento\Catalog\Model\ProductRepository $productRepository */
56+
$productRepository = $this->objectManager->create(\Magento\Catalog\Model\ProductRepository::class);
57+
$product = $productRepository->get('12345');
58+
$productForTest = $product->getId();
59+
6160
$productFilter = [
6261
UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE,
6362
UrlRewrite::ENTITY_ID => [$productForTest]
@@ -134,12 +133,11 @@ public function testGenerateUrlRewritesWithSaveHistory()
134133

135134
$this->assertResults($categoryExpectedResult, $actualResults);
136135

137-
$productIds = [];
138-
foreach ($category->getProductCollection() as $product) {
139-
$productIds = $product->getId();
140-
}
141-
$this->assertTrue(isset($productIds[0]), 'Product for testing does not exist');
142-
$productForTest = $productIds[0];
136+
/** @var \Magento\Catalog\Model\ProductRepository $productRepository */
137+
$productRepository = $this->objectManager->create(\Magento\Catalog\Model\ProductRepository::class);
138+
$product = $productRepository->get('12345');
139+
$productForTest = $product->getId();
140+
143141
$productFilter = [
144142
UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE,
145143
UrlRewrite::ENTITY_ID => [$productForTest]

0 commit comments

Comments
 (0)