Skip to content

Commit e021b39

Browse files
author
Stanislav Idolov
committed
ENGCOM-1685: [backport 2.1] Category\Collection::joinUrlRewrite should use the store set on the collection #13756
1 parent 07b708f commit e021b39

File tree

2 files changed

+131
-0
lines changed

2 files changed

+131
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Catalog\Model\ResourceModel\Category;
8+
9+
class CollectionTest extends \PHPUnit_Framework_TestCase
10+
{
11+
/**
12+
* @var \Magento\Catalog\Model\ResourceModel\Category\Collection
13+
*/
14+
private $collection;
15+
16+
/**
17+
* Sets up the fixture, for example, opens a network connection.
18+
* This method is called before a test is executed.
19+
*/
20+
protected function setUp()
21+
{
22+
$this->collection = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
23+
\Magento\Catalog\Model\ResourceModel\Category\Collection::class
24+
);
25+
}
26+
27+
protected function setDown()
28+
{
29+
/* Refresh stores memory cache after store deletion */
30+
\Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
31+
\Magento\Store\Model\StoreManagerInterface::class
32+
)->reinitStores();
33+
}
34+
35+
/**
36+
* @magentoAppIsolation enabled
37+
* @magentoDbIsolation enabled
38+
* @magentoDataFixture Magento/Catalog/Model/ResourceModel/_files/category_multiple_stores.php
39+
*/
40+
public function testJoinUrlRewriteOnDefault()
41+
{
42+
$categories = $this->collection->joinUrlRewrite()->addPathFilter('1/2/3');
43+
$this->assertCount(1, $categories);
44+
/** @var $category \Magento\Catalog\Model\Category */
45+
$category = $categories->getFirstItem();
46+
$this->assertStringEndsWith('category.html', $category->getUrl());
47+
}
48+
49+
/**
50+
* @magentoAppIsolation enabled
51+
* @magentoDbIsolation enabled
52+
* @magentoDataFixture Magento/Catalog/Model/ResourceModel/_files/category_multiple_stores.php
53+
*/
54+
public function testJoinUrlRewriteNotOnDefaultStore()
55+
{
56+
$store = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
57+
->create(\Magento\Store\Model\Store::class);
58+
$storeId = $store->load('second_category_store', 'code')->getId();
59+
$categories = $this->collection->setStoreId($storeId)->joinUrlRewrite()->addPathFilter('1/2/3');
60+
$this->assertCount(1, $categories);
61+
/** @var $category \Magento\Catalog\Model\Category */
62+
$category = $categories->getFirstItem();
63+
$this->assertStringEndsWith('category-3-on-2.html', $category->getUrl());
64+
}
65+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
/** @var \Magento\Catalog\Model\CategoryFactory $factory */
8+
$factory = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
9+
\Magento\Catalog\Model\CategoryFactory::class
10+
);
11+
/** @var \Magento\Catalog\Model\CategoryRepository $repository */
12+
$repository = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
13+
\Magento\Catalog\Model\CategoryRepository::class
14+
);
15+
/** @var \Magento\Store\Model\StoreManagerInterface $storeManager */
16+
$storeManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
17+
\Magento\Store\Model\StoreManagerInterface::class
18+
);
19+
/** @var \Magento\Store\Model\Store $store */
20+
$store = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(\Magento\Store\Model\Store::class);
21+
if (!$store->load('second_category_store', 'code')->getId()) {
22+
$websiteId = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
23+
\Magento\Store\Model\StoreManagerInterface::class
24+
)->getWebsite()->getId();
25+
$groupId = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
26+
\Magento\Store\Model\StoreManagerInterface::class
27+
)->getWebsite()->getDefaultGroupId();
28+
29+
$store->setCode(
30+
'second_category_store'
31+
)->setWebsiteId(
32+
$websiteId
33+
)->setGroupId(
34+
$groupId
35+
)->setName(
36+
'Fixture Store'
37+
)->setSortOrder(
38+
10
39+
)->setIsActive(
40+
1
41+
);
42+
$store->save();
43+
}
44+
45+
/* Refresh stores memory cache */
46+
\Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
47+
\Magento\Store\Model\StoreManagerInterface::class
48+
)->reinitStores();
49+
50+
/** @var \Magento\Catalog\Model\Category $newCategory */
51+
$newCategory = $factory->create();
52+
$newCategory
53+
->setName('Category')
54+
->setParentId(2)
55+
->setLevel(2)
56+
->setPath('1/2/3')
57+
->setAvailableSortBy('name')
58+
->setDefaultSortBy('name')
59+
->setIsActive(true)
60+
->setPosition(1);
61+
$repository->save($newCategory);
62+
$currentStoreId = $storeManager->getStore()->getId();
63+
$storeManager->setCurrentStore($storeManager->getStore($store->getId()));
64+
$newCategory->setUrlKey('category-3-on-2');
65+
$repository->save($newCategory);
66+
$storeManager->setCurrentStore($storeManager->getStore($currentStoreId));

0 commit comments

Comments
 (0)