Skip to content

Commit 47f791a

Browse files
author
eduard13
committed
Covering the CategoryProcessUrlRewriteMovingObserver by Unit Test
1 parent 8fd89cf commit 47f791a

File tree

1 file changed

+151
-0
lines changed

1 file changed

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

0 commit comments

Comments
 (0)