Skip to content

Commit 3495a05

Browse files
authored
Merge pull request #4426 from magento-tango/PR-M23-06-28-19
[tango] Bug fixes
2 parents 7514a0e + ebcb103 commit 3495a05

File tree

5 files changed

+143
-20
lines changed

5 files changed

+143
-20
lines changed

app/code/Magento/CatalogUrlRewrite/Observer/UrlRewriteHandler.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ private function generateChangedProductUrls(
297297
/* @var Collection $collection */
298298
$collection = $this->productCollectionFactory->create()
299299
->setStoreId($categoryStoreId)
300-
->addIdFilter($category->getAffectedProductIds())
300+
->addIdFilter($category->getChangedProductIds())
301301
->addAttributeToSelect('visibility')
302302
->addAttributeToSelect('name')
303303
->addAttributeToSelect('url_key')

dev/tests/integration/testsuite/Magento/CatalogUrlRewrite/Observer/UrlRewriteHandlerTest.php

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
use Magento\Catalog\Api\CategoryListInterface;
1111
use Magento\Catalog\Api\Data\CategoryInterface;
12-
use Magento\Catalog\Api\Data\ProductInterface;
1312
use Magento\Catalog\Api\ProductRepositoryInterface;
1413
use Magento\Framework\Api\SearchCriteriaBuilder;
1514
use Magento\TestFramework\Helper\Bootstrap;
@@ -19,6 +18,7 @@
1918

2019
/**
2120
* @magentoAppArea adminhtml
21+
* @magentoDbIsolation disabled
2222
*/
2323
class UrlRewriteHandlerTest extends TestCase
2424
{
@@ -27,6 +27,11 @@ class UrlRewriteHandlerTest extends TestCase
2727
*/
2828
private $handler;
2929

30+
/**
31+
* @var ProductRepositoryInterface
32+
*/
33+
private $productRepository;
34+
3035
/**
3136
* @var ObjectManager
3237
*/
@@ -38,21 +43,21 @@ class UrlRewriteHandlerTest extends TestCase
3843
protected function setUp()
3944
{
4045
$this->objectManager = Bootstrap::getObjectManager();
41-
$this->handler = $this->objectManager->get(UrlRewriteHandler::class);
46+
$this->productRepository = $this->objectManager->get(ProductRepositoryInterface::class);
47+
$this->handler = $this->objectManager->create(UrlRewriteHandler::class);
4248
}
4349

4450
/**
4551
* Checks category URLs rewrites generation with enabled `Use Categories Path for Product URLs` option and
4652
* store's specific product URL key.
4753
*
48-
* @magentoDbIsolation disabled
4954
* @magentoDataFixture Magento/CatalogUrlRewrite/Fixtures/product_custom_url_key.php
5055
* @magentoConfigFixture admin_store catalog/seo/product_use_categories 1
5156
* @magentoConfigFixture default/catalog/seo/generate_category_product_rewrites 1
5257
*/
5358
public function testGenerateProductUrlRewrites()
5459
{
55-
$product = $this->getProduct('p002');
60+
$product = $this->productRepository->get('p002');
5661
$category = $this->getCategory('category 1');
5762
// change the category scope to the global
5863
$category->setStoreId(0)
@@ -81,6 +86,36 @@ function (UrlRewrite $urlRewrite) {
8186
self::assertEquals($expected, $actual, 'Generated URLs rewrites do not match.');
8287
}
8388

89+
/**
90+
* @magentoDataFixture Magento/CatalogUrlRewrite/_files/category_with_products.php
91+
*/
92+
public function testGenerateProductUrlRewrites2()
93+
{
94+
$product1 = $this->productRepository->get('simple');
95+
$product2 = $this->productRepository->get('12345');
96+
$category = $this->getCategory('Category 1');
97+
98+
$category->setChangedProductIds([$product1->getId()]);
99+
$category->setAffectedProductIds([$product1->getId(), $product2->getId()]);
100+
$category->setAnchorsAbove(false);
101+
$generatedUrls = $this->handler->generateProductUrlRewrites($category);
102+
$actual = array_values(
103+
array_map(
104+
function (UrlRewrite $urlRewrite) {
105+
return $urlRewrite->getRequestPath();
106+
},
107+
$generatedUrls
108+
)
109+
);
110+
111+
$expected = [
112+
'simple-product.html',
113+
'category-1/simple-product.html',
114+
'/simple-product.html',
115+
];
116+
$this->assertEquals($expected, $actual, 'Generated URLs rewrites do not match.');
117+
}
118+
84119
/**
85120
* Gets category by name.
86121
*
@@ -100,18 +135,4 @@ private function getCategory(string $name): CategoryInterface
100135

101136
return array_pop($items);
102137
}
103-
104-
/**
105-
* Gets product by SKU.
106-
*
107-
* @param string $sku
108-
* @return ProductInterface
109-
* @throws \Magento\Framework\Exception\NoSuchEntityException
110-
*/
111-
private function getProduct(string $sku): ProductInterface
112-
{
113-
/** @var ProductRepositoryInterface $productRepository */
114-
$productRepository = $this->objectManager->get(ProductRepositoryInterface::class);
115-
return $productRepository->get($sku);
116-
}
117138
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
8+
9+
$installer = $objectManager->create(\Magento\Catalog\Setup\CategorySetup::class);
10+
11+
\Magento\TestFramework\Helper\Bootstrap::getInstance()->loadArea(
12+
\Magento\Backend\App\Area\FrontNameResolver::AREA_CODE
13+
);
14+
15+
$category = $objectManager->create(\Magento\Catalog\Model\Category::class);
16+
$category->isObjectNew(true);
17+
$category->setId(3)
18+
->setName('Category 1')
19+
->setParentId(2)
20+
->setPath('1/2/3')
21+
->setLevel(2)
22+
->setAvailableSortBy('name')
23+
->setDefaultSortBy('name')
24+
->setIsActive(true)
25+
->setPosition(1)
26+
->save();
27+
28+
$productRepository = $objectManager->create(\Magento\Catalog\Api\ProductRepositoryInterface::class);
29+
$categoryLinkRepository = $objectManager->create(
30+
\Magento\Catalog\Api\CategoryLinkRepositoryInterface::class,
31+
[
32+
'productRepository' => $productRepository
33+
]
34+
);
35+
$categoryLinkManagement = $objectManager->create(
36+
\Magento\Catalog\Api\CategoryLinkManagementInterface::class,
37+
[
38+
'productRepository' => $productRepository,
39+
'categoryLinkRepository' => $categoryLinkRepository
40+
]
41+
);
42+
43+
$product = $objectManager->create(\Magento\Catalog\Model\Product::class);
44+
$product->setTypeId(\Magento\Catalog\Model\Product\Type::TYPE_SIMPLE)
45+
->setAttributeSetId($installer->getAttributeSetId('catalog_product', 'Default'))
46+
->setStoreId(1)
47+
->setWebsiteIds([1])
48+
->setName('Simple Product')
49+
->setSku('simple')
50+
->setPrice(10)
51+
->setWeight(18)
52+
->setStockData(['use_config_manage_stock' => 0])
53+
->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH)
54+
->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED)
55+
->save();
56+
$categoryLinkManagement->assignProductToCategories($product->getSku(), [3]);
57+
58+
$product =$objectManager->create(\Magento\Catalog\Model\Product::class);
59+
$product->setTypeId(\Magento\Catalog\Model\Product\Type::TYPE_SIMPLE)
60+
->setAttributeSetId($installer->getAttributeSetId('catalog_product', 'Default'))
61+
->setStoreId(1)
62+
->setWebsiteIds([1])
63+
->setName('Simple Product Two')
64+
->setSku('12345') // SKU intentionally contains digits only
65+
->setPrice(45.67)
66+
->setWeight(56)
67+
->setStockData(['use_config_manage_stock' => 0])
68+
->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH)
69+
->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED)
70+
->save();
71+
$categoryLinkManagement->assignProductToCategories($product->getSku(), [3]);
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
8+
9+
$registry = $objectManager->get(\Magento\Framework\Registry::class);
10+
$registry->unregister('isSecureArea');
11+
$registry->register('isSecureArea', true);
12+
13+
$productRepository = $objectManager->get(\Magento\Catalog\Api\ProductRepositoryInterface::class);
14+
$productSkuList = ['simple', '12345'];
15+
foreach ($productSkuList as $sku) {
16+
try {
17+
$product = $productRepository->get($sku, true, null, true);
18+
$productRepository->delete($product);
19+
} catch (\Magento\Framework\Exception\NoSuchEntityException $e) {
20+
//Product already removed
21+
continue;
22+
}
23+
}
24+
25+
$collection = $objectManager->create(\Magento\Catalog\Model\ResourceModel\Category\Collection::class);
26+
$collection->addAttributeToFilter('level', 2)
27+
->load()
28+
->delete();
29+
30+
$registry->unregister('isSecureArea');
31+
$registry->register('isSecureArea', false);

lib/web/css/source/lib/_resets.less

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
object,
5656
video,
5757
embed {
58-
height: auto;
58+
max-height: 100%;
5959
max-width: 100%;
6060
}
6161

0 commit comments

Comments
 (0)