From 47f791a21c5d2d40d3dd0585f106f0ad2ca35664 Mon Sep 17 00:00:00 2001 From: eduard13 Date: Mon, 10 Sep 2018 17:22:50 +0300 Subject: [PATCH 1/5] Covering the CategoryProcessUrlRewriteMovingObserver by Unit Test --- ...oryProcessUrlRewriteMovingObserverTest.php | 151 ++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/CategoryProcessUrlRewriteMovingObserverTest.php diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/CategoryProcessUrlRewriteMovingObserverTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/CategoryProcessUrlRewriteMovingObserverTest.php new file mode 100644 index 0000000000000..d9b0c14b2a342 --- /dev/null +++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/CategoryProcessUrlRewriteMovingObserverTest.php @@ -0,0 +1,151 @@ +categoryUrlRewriteGeneratorMock = $this->createMock(CategoryUrlRewriteGenerator::class); + $this->urlPersistMock = $this->createMock(UrlPersistInterface::class); + $this->scopeConfigMock = $this->createMock(ScopeConfigInterface::class); + $this->urlRewriteHandlerMock = $this->createMock(UrlRewriteHandler::class); + $this->urlRewriteBunchReplacerMock = $this->createPartialMock(UrlRewriteBunchReplacer::class, + ['doBunchReplace'] + ); + $this->databaseMapPoolMock = $this->createMock(DatabaseMapPool::class); + + $this->observer = new CategoryProcessUrlRewriteMovingObserver( + $this->categoryUrlRewriteGeneratorMock, + $this->urlPersistMock, + $this->scopeConfigMock, + $this->urlRewriteHandlerMock, + $this->urlRewriteBunchReplacerMock, + $this->databaseMapPoolMock, + [ + DataCategoryUrlRewriteDatabaseMap::class, + DataProductUrlRewriteDatabaseMap::class + ] + ); + } + + /** + * Test category process rewrite url by changing the parent + * + * @return void + */ + public function testCategoryProcessUrlRewriteAfterMovingWithChangedParentId() + { + /** @var Observer|\PHPUnit_Framework_MockObject_MockObject $observerMock */ + $observerMock = $this->createMock(Observer::class); + $eventMock = $this->getMockBuilder(Event::class) + ->disableOriginalConstructor() + ->setMethods(['getCategory']) + ->getMock(); + $categoryMock = $this->createPartialMock(Category::class, [ + 'dataHasChangedFor', + 'getEntityId', + 'getStoreId', + 'setData' + ]); + + $categoryMock->expects($this->once())->method('dataHasChangedFor')->with('parent_id') + ->willReturn(true); + $eventMock->expects($this->once())->method('getCategory')->willReturn($categoryMock); + $observerMock->expects($this->once())->method('getEvent')->willReturn($eventMock); + $this->scopeConfigMock->expects($this->once())->method('isSetFlag') + ->with(UrlKeyRenderer::XML_PATH_SEO_SAVE_HISTORY)->willReturn(true); + $this->categoryUrlRewriteGeneratorMock->expects($this->once())->method('generate') + ->with($categoryMock, true)->willReturn(['category-url-rewrite']); + $this->urlRewriteHandlerMock->expects($this->once())->method('generateProductUrlRewrites') + ->with($categoryMock)->willReturn(['product-url-rewrite']); + $this->databaseMapPoolMock->expects($this->exactly(2))->method('resetMap')->willReturnSelf(); + + $this->observer->execute($observerMock); + } + + /** + * Test category process rewrite url without changing the parent + * + * @return void + */ + public function testCategoryProcessUrlRewriteAfterMovingWithinNotChangedParent() + { + /** @var Observer|\PHPUnit_Framework_MockObject_MockObject $observerMock */ + $observerMock = $this->createMock(Observer::class); + $eventMock = $this->getMockBuilder(Event::class) + ->disableOriginalConstructor() + ->setMethods(['getCategory']) + ->getMock(); + $categoryMock = $this->createPartialMock(Category::class, ['dataHasChangedFor']); + $observerMock->expects($this->once())->method('getEvent')->willReturn($eventMock); + $eventMock->expects($this->once())->method('getCategory')->willReturn($categoryMock); + $categoryMock->expects($this->once())->method('dataHasChangedFor')->with('parent_id') + ->willReturn(false); + + $this->observer->execute($observerMock); + } +} From 94ed408b61c46d86c4adeefe273c16447b565e42 Mon Sep 17 00:00:00 2001 From: Yaroslav Rogoza Date: Mon, 10 Sep 2018 16:41:34 +0200 Subject: [PATCH 2/5] Code style adjustments --- .../Observer/CategoryProcessUrlRewriteMovingObserverTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/CategoryProcessUrlRewriteMovingObserverTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/CategoryProcessUrlRewriteMovingObserverTest.php index d9b0c14b2a342..7e51731cf0776 100644 --- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/CategoryProcessUrlRewriteMovingObserverTest.php +++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/CategoryProcessUrlRewriteMovingObserverTest.php @@ -73,7 +73,8 @@ protected function setUp() $this->urlPersistMock = $this->createMock(UrlPersistInterface::class); $this->scopeConfigMock = $this->createMock(ScopeConfigInterface::class); $this->urlRewriteHandlerMock = $this->createMock(UrlRewriteHandler::class); - $this->urlRewriteBunchReplacerMock = $this->createPartialMock(UrlRewriteBunchReplacer::class, + $this->urlRewriteBunchReplacerMock = $this->createPartialMock( + UrlRewriteBunchReplacer::class, ['doBunchReplace'] ); $this->databaseMapPoolMock = $this->createMock(DatabaseMapPool::class); From 36d1a95037a7ec97afae0c0a54aa56cc0b60a48c Mon Sep 17 00:00:00 2001 From: eduard13 Date: Tue, 11 Sep 2018 10:48:57 +0300 Subject: [PATCH 3/5] Small adjustments --- .../CategoryProcessUrlRewriteMovingObserverTest.php | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/CategoryProcessUrlRewriteMovingObserverTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/CategoryProcessUrlRewriteMovingObserverTest.php index 7e51731cf0776..6c54b4d554243 100644 --- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/CategoryProcessUrlRewriteMovingObserverTest.php +++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/CategoryProcessUrlRewriteMovingObserverTest.php @@ -20,14 +20,13 @@ use Magento\Framework\Event; use Magento\Framework\Event\Observer; use Magento\UrlRewrite\Model\UrlPersistInterface; -use PHPUnit\Framework\TestCase; /** * Class CategoryProcessUrlRewriteMovingObserverTest * * @covers \Magento\CatalogUrlRewrite\Observer\CategoryProcessUrlRewriteMovingObserver */ -class CategoryProcessUrlRewriteMovingObserverTest extends TestCase +class CategoryProcessUrlRewriteMovingObserverTest extends \PHPUnit\Framework\TestCase { /** * @var CategoryProcessUrlRewriteMovingObserver @@ -54,11 +53,6 @@ class CategoryProcessUrlRewriteMovingObserverTest extends TestCase */ private $urlRewriteHandlerMock; - /** - * @var UrlRewriteBunchReplacer|\PHPUnit_Framework_MockObject_MockObject - */ - private $urlRewriteBunchReplacerMock; - /** * @var DatabaseMapPool|\PHPUnit_Framework_MockObject_MockObject */ @@ -73,7 +67,8 @@ protected function setUp() $this->urlPersistMock = $this->createMock(UrlPersistInterface::class); $this->scopeConfigMock = $this->createMock(ScopeConfigInterface::class); $this->urlRewriteHandlerMock = $this->createMock(UrlRewriteHandler::class); - $this->urlRewriteBunchReplacerMock = $this->createPartialMock( + /** @var UrlRewriteBunchReplacer|\PHPUnit_Framework_MockObject_MockObject $urlRewriteBunchReplacerMock */ + $urlRewriteBunchReplacerMock = $this->createPartialMock( UrlRewriteBunchReplacer::class, ['doBunchReplace'] ); @@ -84,7 +79,7 @@ protected function setUp() $this->urlPersistMock, $this->scopeConfigMock, $this->urlRewriteHandlerMock, - $this->urlRewriteBunchReplacerMock, + $urlRewriteBunchReplacerMock, $this->databaseMapPoolMock, [ DataCategoryUrlRewriteDatabaseMap::class, From a73393393d460c63f26a155417d7a62e466b9f4e Mon Sep 17 00:00:00 2001 From: eduard13 Date: Tue, 11 Sep 2018 13:42:35 +0300 Subject: [PATCH 4/5] Refactoring the local variable's name --- .../CategoryProcessUrlRewriteMovingObserverTest.php | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/CategoryProcessUrlRewriteMovingObserverTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/CategoryProcessUrlRewriteMovingObserverTest.php index 6c54b4d554243..d22f0e212b75e 100644 --- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/CategoryProcessUrlRewriteMovingObserverTest.php +++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/CategoryProcessUrlRewriteMovingObserverTest.php @@ -67,11 +67,8 @@ protected function setUp() $this->urlPersistMock = $this->createMock(UrlPersistInterface::class); $this->scopeConfigMock = $this->createMock(ScopeConfigInterface::class); $this->urlRewriteHandlerMock = $this->createMock(UrlRewriteHandler::class); - /** @var UrlRewriteBunchReplacer|\PHPUnit_Framework_MockObject_MockObject $urlRewriteBunchReplacerMock */ - $urlRewriteBunchReplacerMock = $this->createPartialMock( - UrlRewriteBunchReplacer::class, - ['doBunchReplace'] - ); + /** @var UrlRewriteBunchReplacer|\PHPUnit_Framework_MockObject_MockObject $urlRewriteMock */ + $urlRewriteMock = $this->createMock(UrlRewriteBunchReplacer::class); $this->databaseMapPoolMock = $this->createMock(DatabaseMapPool::class); $this->observer = new CategoryProcessUrlRewriteMovingObserver( @@ -79,7 +76,7 @@ protected function setUp() $this->urlPersistMock, $this->scopeConfigMock, $this->urlRewriteHandlerMock, - $urlRewriteBunchReplacerMock, + $urlRewriteMock, $this->databaseMapPoolMock, [ DataCategoryUrlRewriteDatabaseMap::class, From fd2cb4c38273ef894670ddc6e59ea3afbeae52f2 Mon Sep 17 00:00:00 2001 From: Eugene Shakhsuvarov Date: Tue, 18 Sep 2018 12:47:17 +0300 Subject: [PATCH 5/5] Update CategoryProcessUrlRewriteMovingObserverTest.php Suppress PHPMD warning for test --- .../Observer/CategoryProcessUrlRewriteMovingObserverTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/CategoryProcessUrlRewriteMovingObserverTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/CategoryProcessUrlRewriteMovingObserverTest.php index d22f0e212b75e..b12da6243a903 100644 --- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/CategoryProcessUrlRewriteMovingObserverTest.php +++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/CategoryProcessUrlRewriteMovingObserverTest.php @@ -24,7 +24,7 @@ /** * Class CategoryProcessUrlRewriteMovingObserverTest * - * @covers \Magento\CatalogUrlRewrite\Observer\CategoryProcessUrlRewriteMovingObserver + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class CategoryProcessUrlRewriteMovingObserverTest extends \PHPUnit\Framework\TestCase {