Skip to content

Commit e97e8ec

Browse files
author
Stanislav Idolov
authored
ENGCOM-3032: [Forwardport] [CatalogUrlRewrite] Covering the CategoryProcessUrlRewriteMovingObserver by Unit Test #18211
2 parents e2da973 + 9bee6b9 commit e97e8ec

File tree

1 file changed

+144
-0
lines changed

1 file changed

+144
-0
lines changed
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
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\Test\Unit\Observer;
9+
10+
use Magento\Catalog\Model\Category;
11+
use Magento\CatalogUrlRewrite\Block\UrlKeyRenderer;
12+
use Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGenerator;
13+
use Magento\CatalogUrlRewrite\Model\Map\DatabaseMapPool;
14+
use Magento\CatalogUrlRewrite\Model\Map\DataCategoryUrlRewriteDatabaseMap;
15+
use Magento\CatalogUrlRewrite\Model\Map\DataProductUrlRewriteDatabaseMap;
16+
use Magento\CatalogUrlRewrite\Model\UrlRewriteBunchReplacer;
17+
use Magento\CatalogUrlRewrite\Observer\CategoryProcessUrlRewriteMovingObserver;
18+
use Magento\CatalogUrlRewrite\Observer\UrlRewriteHandler;
19+
use Magento\Framework\App\Config\ScopeConfigInterface;
20+
use Magento\Framework\Event;
21+
use Magento\Framework\Event\Observer;
22+
use Magento\UrlRewrite\Model\UrlPersistInterface;
23+
24+
/**
25+
* Class CategoryProcessUrlRewriteMovingObserverTest
26+
*
27+
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
28+
*/
29+
class CategoryProcessUrlRewriteMovingObserverTest extends \PHPUnit\Framework\TestCase
30+
{
31+
/**
32+
* @var CategoryProcessUrlRewriteMovingObserver
33+
*/
34+
private $observer;
35+
36+
/**
37+
* @var CategoryUrlRewriteGenerator|\PHPUnit_Framework_MockObject_MockObject
38+
*/
39+
private $categoryUrlRewriteGeneratorMock;
40+
41+
/**
42+
* @var UrlPersistInterface|\PHPUnit_Framework_MockObject_MockObject
43+
*/
44+
private $urlPersistMock;
45+
46+
/**
47+
* @var ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
48+
*/
49+
private $scopeConfigMock;
50+
51+
/**
52+
* @var UrlRewriteHandler|\PHPUnit_Framework_MockObject_MockObject
53+
*/
54+
private $urlRewriteHandlerMock;
55+
56+
/**
57+
* @var DatabaseMapPool|\PHPUnit_Framework_MockObject_MockObject
58+
*/
59+
private $databaseMapPoolMock;
60+
61+
/**
62+
* Set Up
63+
*/
64+
protected function setUp()
65+
{
66+
$this->categoryUrlRewriteGeneratorMock = $this->createMock(CategoryUrlRewriteGenerator::class);
67+
$this->urlPersistMock = $this->createMock(UrlPersistInterface::class);
68+
$this->scopeConfigMock = $this->createMock(ScopeConfigInterface::class);
69+
$this->urlRewriteHandlerMock = $this->createMock(UrlRewriteHandler::class);
70+
/** @var UrlRewriteBunchReplacer|\PHPUnit_Framework_MockObject_MockObject $urlRewriteMock */
71+
$urlRewriteMock = $this->createMock(UrlRewriteBunchReplacer::class);
72+
$this->databaseMapPoolMock = $this->createMock(DatabaseMapPool::class);
73+
74+
$this->observer = new CategoryProcessUrlRewriteMovingObserver(
75+
$this->categoryUrlRewriteGeneratorMock,
76+
$this->urlPersistMock,
77+
$this->scopeConfigMock,
78+
$this->urlRewriteHandlerMock,
79+
$urlRewriteMock,
80+
$this->databaseMapPoolMock,
81+
[
82+
DataCategoryUrlRewriteDatabaseMap::class,
83+
DataProductUrlRewriteDatabaseMap::class
84+
]
85+
);
86+
}
87+
88+
/**
89+
* Test category process rewrite url by changing the parent
90+
*
91+
* @return void
92+
*/
93+
public function testCategoryProcessUrlRewriteAfterMovingWithChangedParentId()
94+
{
95+
/** @var Observer|\PHPUnit_Framework_MockObject_MockObject $observerMock */
96+
$observerMock = $this->createMock(Observer::class);
97+
$eventMock = $this->getMockBuilder(Event::class)
98+
->disableOriginalConstructor()
99+
->setMethods(['getCategory'])
100+
->getMock();
101+
$categoryMock = $this->createPartialMock(Category::class, [
102+
'dataHasChangedFor',
103+
'getEntityId',
104+
'getStoreId',
105+
'setData'
106+
]);
107+
108+
$categoryMock->expects($this->once())->method('dataHasChangedFor')->with('parent_id')
109+
->willReturn(true);
110+
$eventMock->expects($this->once())->method('getCategory')->willReturn($categoryMock);
111+
$observerMock->expects($this->once())->method('getEvent')->willReturn($eventMock);
112+
$this->scopeConfigMock->expects($this->once())->method('isSetFlag')
113+
->with(UrlKeyRenderer::XML_PATH_SEO_SAVE_HISTORY)->willReturn(true);
114+
$this->categoryUrlRewriteGeneratorMock->expects($this->once())->method('generate')
115+
->with($categoryMock, true)->willReturn(['category-url-rewrite']);
116+
$this->urlRewriteHandlerMock->expects($this->once())->method('generateProductUrlRewrites')
117+
->with($categoryMock)->willReturn(['product-url-rewrite']);
118+
$this->databaseMapPoolMock->expects($this->exactly(2))->method('resetMap')->willReturnSelf();
119+
120+
$this->observer->execute($observerMock);
121+
}
122+
123+
/**
124+
* Test category process rewrite url without changing the parent
125+
*
126+
* @return void
127+
*/
128+
public function testCategoryProcessUrlRewriteAfterMovingWithinNotChangedParent()
129+
{
130+
/** @var Observer|\PHPUnit_Framework_MockObject_MockObject $observerMock */
131+
$observerMock = $this->createMock(Observer::class);
132+
$eventMock = $this->getMockBuilder(Event::class)
133+
->disableOriginalConstructor()
134+
->setMethods(['getCategory'])
135+
->getMock();
136+
$categoryMock = $this->createPartialMock(Category::class, ['dataHasChangedFor']);
137+
$observerMock->expects($this->once())->method('getEvent')->willReturn($eventMock);
138+
$eventMock->expects($this->once())->method('getCategory')->willReturn($categoryMock);
139+
$categoryMock->expects($this->once())->method('dataHasChangedFor')->with('parent_id')
140+
->willReturn(false);
141+
142+
$this->observer->execute($observerMock);
143+
}
144+
}

0 commit comments

Comments
 (0)