Skip to content

Commit 97258e1

Browse files
committed
Changes are covered by the integration test
1 parent acb8642 commit 97258e1

File tree

3 files changed

+208
-0
lines changed

3 files changed

+208
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\CatalogUrlRewrite\Model\Product;
9+
10+
use Magento\Catalog\Api\ProductRepositoryInterface;
11+
use Magento\Catalog\Model\Category;
12+
use Magento\CatalogUrlRewrite\Model\ObjectRegistryFactory;
13+
use Magento\Framework\ObjectManagerInterface;
14+
use Magento\Store\Model\Store;
15+
use Magento\TestFramework\Helper\Bootstrap;
16+
use PHPUnit\Framework\TestCase;
17+
18+
/**3
19+
* Verify generate url rewrites for anchor categories.
20+
*/
21+
class AnchorUrlRewriteGeneratorTest extends TestCase
22+
{
23+
24+
/**
25+
* @var ObjectManagerInterface
26+
*/
27+
private $objectManager;
28+
29+
/**
30+
* @var ProductRepositoryInterface
31+
*/
32+
private $productRepository;
33+
34+
/**
35+
* @var Category
36+
*/
37+
private $collectionCategory;
38+
39+
/**
40+
* @var ObjectRegistryFactory
41+
*/
42+
private $objectRegistryFactory;
43+
44+
/**
45+
* @inheritDoc
46+
*/
47+
public function setUp()
48+
{
49+
parent::setUp(); // TODO: Change the autogenerated stub
50+
51+
$this->objectManager = Bootstrap::getObjectManager();
52+
$this->productRepository = $this->objectManager->create(ProductRepositoryInterface::class);
53+
$this->collectionCategory = $this->objectManager->create(Category::class);
54+
$this->objectRegistryFactory = $this->objectManager->create(ObjectRegistryFactory::class);
55+
}
56+
57+
/**
58+
* Verify correct generate of the relative "StoreId"
59+
*
60+
* @magentoDataFixture Magento/CatalogUrlRewrite/_files/product_with_stores.php
61+
* @magentoDbIsolation disabled
62+
*
63+
* @return void
64+
*/
65+
public function testGenerate(): void
66+
{
67+
$product = $this->productRepository->get('simple');
68+
$categories = $product->getCategoryCollection();
69+
$productCategories = $this->objectRegistryFactory->create(['entities' => $categories]);
70+
71+
/** @var Store $store */
72+
$store = Bootstrap::getObjectManager()->get(Store::class);
73+
$store->load('fixture_second_store', 'code');
74+
75+
/** @var AnchorUrlRewriteGenerator $generator */
76+
$generator = $this->objectManager->get(AnchorUrlRewriteGenerator::class);
77+
78+
$this->assertEquals([], $generator->generate(1, $product, $productCategories));
79+
$this->assertNotEquals([], $generator->generate($store->getId(), $product, $productCategories));
80+
}
81+
}
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
use Magento\Backend\App\Area\FrontNameResolver;
9+
use Magento\Catalog\Model\Category;
10+
use Magento\Store\Model\Store;
11+
use Magento\TestFramework\Helper\Bootstrap;
12+
13+
require __DIR__ . '/../../../Magento/Store/_files/second_store.php';
14+
Bootstrap::getInstance()
15+
->loadArea(FrontNameResolver::AREA_CODE);
16+
17+
/**
18+
* After installation system has categories:
19+
*
20+
* root one with ID:1 and Default category with ID:3 both with StoreId:1,
21+
*
22+
* root one with ID:1 and Default category with ID:2 both with StoreId:2
23+
*/
24+
25+
$store = Bootstrap::getObjectManager()->get(Store::class);
26+
$store->load('fixture_second_store', 'code');
27+
28+
/** @var $category Category */
29+
$category = Bootstrap::getObjectManager()->create(Category::class);
30+
$category->isObjectNew(true);
31+
$category->setId(3)
32+
->setName('Category 1')
33+
->setParentId(1)
34+
->setPath('1/2')
35+
->setLevel(1)
36+
->setAvailableSortBy('name')
37+
->setDefaultSortBy('name')
38+
->setIsActive(true)
39+
->setPosition(1)
40+
->save();
41+
42+
$category = Bootstrap::getObjectManager()->create(Category::class);
43+
$category->isObjectNew(true);
44+
$category->setId(4)
45+
->setName('Category 1.1')
46+
->setParentId(3)
47+
->setPath('1/2/3')
48+
->setLevel(2)
49+
->setAvailableSortBy('name')
50+
->setDefaultSortBy('name')
51+
->setIsActive(true)
52+
->setPosition(1)
53+
->save();
54+
55+
$category = Bootstrap::getObjectManager()->create(Category::class);
56+
$category->isObjectNew(true);
57+
$category->setId(3)
58+
->setName('Category 1')
59+
->setParentId(2)
60+
->setPath('1/2/3')
61+
->setLevel(2)
62+
->setAvailableSortBy('name')
63+
->setDefaultSortBy('name')
64+
->setStoreId($store->getId())
65+
->setIsActive(true)
66+
->setPosition(1)
67+
->save();
68+
69+
$category = Bootstrap::getObjectManager()->create(Category::class);
70+
$category->isObjectNew(true);
71+
$category->setId(4)
72+
->setName('Category 1.1')
73+
->setParentId(3)
74+
->setPath('1/2/3/4')
75+
->setLevel(3)
76+
->setAvailableSortBy('name')
77+
->setDefaultSortBy('name')
78+
->setStoreId($store->getId())
79+
->setIsActive(true)
80+
->setPosition(1)
81+
->save();
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
/** @var \Magento\Catalog\Setup\CategorySetup $installer */
9+
$installer = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
10+
\Magento\Catalog\Setup\CategorySetup::class
11+
);
12+
require __DIR__ . '/categories_with_stores.php';
13+
14+
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
15+
$productRepository = $objectManager->create(\Magento\Catalog\Api\ProductRepositoryInterface::class);
16+
$categoryLinkRepository = $objectManager->create(
17+
\Magento\Catalog\Api\CategoryLinkRepositoryInterface::class,
18+
[
19+
'productRepository' => $productRepository
20+
]
21+
);
22+
23+
/** @var Magento\Catalog\Api\CategoryLinkManagementInterface $linkManagement */
24+
$categoryLinkManagement = $objectManager->create(
25+
\Magento\Catalog\Api\CategoryLinkManagementInterface::class,
26+
[
27+
'productRepository' => $productRepository,
28+
'categoryLinkRepository' => $categoryLinkRepository
29+
]
30+
);
31+
32+
/** @var $product \Magento\Catalog\Model\Product */
33+
$product = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(\Magento\Catalog\Model\Product::class);
34+
$product->setTypeId(\Magento\Catalog\Model\Product\Type::TYPE_SIMPLE)
35+
->setAttributeSetId($installer->getAttributeSetId('catalog_product', 'Default'))
36+
->setStoreId(1)
37+
->setWebsiteIds([1])
38+
->setName('Simple Product')
39+
->setSku('simple')
40+
->setPrice(10)
41+
->setWeight(18)
42+
->setStockData(['use_config_manage_stock' => 0])
43+
->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH)
44+
->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED)
45+
->save();
46+
$categoryLinkManagement->assignProductToCategories($product->getSku(), [4]);

0 commit comments

Comments
 (0)