CmsPageUrlRewriteGeneratorTest.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\CmsUrlRewrite\Test\Unit\Model;
  7. class CmsPageUrlRewriteGeneratorTest extends \PHPUnit\Framework\TestCase
  8. {
  9. /**
  10. * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
  11. */
  12. private $objectManager;
  13. /**
  14. * @var \Magento\Store\Model\StoreManagerInterface|\PHPUnit_Framework_MockObject_MockObject
  15. */
  16. private $storeManager;
  17. /**
  18. * @var \Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory|\PHPUnit_Framework_MockObject_MockObject
  19. */
  20. private $urlRewriteFactory;
  21. /**
  22. * @var \Magento\CmsUrlRewrite\Model\CmsPageUrlPathGenerator|\PHPUnit_Framework_MockObject_MockObject
  23. */
  24. private $urlPathGenerator;
  25. /**
  26. * @var \Magento\CmsUrlRewrite\Model\CmsPageUrlRewriteGenerator
  27. */
  28. private $urlRewriteGenerator;
  29. /**
  30. * @return void
  31. */
  32. protected function setUp()
  33. {
  34. $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  35. $this->storeManager = $this->getMockBuilder(\Magento\Store\Model\StoreManagerInterface::class)
  36. ->getMockForAbstractClass();
  37. $this->urlRewriteFactory = $this->getMockBuilder(\Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory::class)
  38. ->setMethods(['create'])
  39. ->disableOriginalConstructor()
  40. ->getMock();
  41. $this->urlPathGenerator = $this->getMockBuilder(\Magento\CmsUrlRewrite\Model\CmsPageUrlPathGenerator::class)
  42. ->disableOriginalConstructor()
  43. ->getMock();
  44. $this->urlRewriteGenerator = $this->objectManager->getObject(
  45. \Magento\CmsUrlRewrite\Model\CmsPageUrlRewriteGenerator::class,
  46. [
  47. 'storeManager' => $this->storeManager,
  48. 'urlRewriteFactory' => $this->urlRewriteFactory,
  49. 'cmsPageUrlPathGenerator' => $this->urlPathGenerator
  50. ]
  51. );
  52. }
  53. public function testGenerateForAllStores()
  54. {
  55. $initializesStores = [0];
  56. $cmsPageId = 1;
  57. $cmsPage = $this->getMockBuilder(\Magento\Cms\Model\Page::class)
  58. ->disableOriginalConstructor()
  59. ->getMock();
  60. $cmsPage->expects($this->any())->method('getStores')->willReturn($initializesStores);
  61. $store = $this->getMockBuilder(\Magento\Store\Api\Data\StoreInterface::class)
  62. ->setMethods(['getStoreId'])
  63. ->getMockForAbstractClass();
  64. $this->storeManager->expects($this->any())->method('getStores')->willReturn([$store]);
  65. $store->expects($this->any())->method('getStoreId')->willReturn($initializesStores[0]);
  66. $urlRewrite = $this->getMockBuilder(\Magento\UrlRewrite\Service\V1\Data\UrlRewrite::class)
  67. ->getMockForAbstractClass();
  68. $this->urlRewriteFactory->expects($this->any())->method('create')->willReturn($urlRewrite);
  69. $cmsPage->expects($this->any())->method('getId')->willReturn($cmsPageId);
  70. $cmsPage->expects($this->any())->method('getIdentifier')->willReturn('request_path');
  71. $this->urlPathGenerator->expects($this->any())->method('getCanonicalUrlPath')->with($cmsPage)
  72. ->willReturn('cms/page/view/page_id/' . $cmsPageId);
  73. $urls = $this->urlRewriteGenerator->generate($cmsPage);
  74. $this->assertEquals($initializesStores[0], $urls[0]->getStoreId());
  75. $this->assertFalse(isset($urls[1]));
  76. }
  77. public function testGenerateForSpecificStores()
  78. {
  79. $initializesStores = [1, 2];
  80. $cmsPageId = 1;
  81. $cmsPage = $this->getMockBuilder(\Magento\Cms\Model\Page::class)
  82. ->disableOriginalConstructor()
  83. ->getMock();
  84. $cmsPage->expects($this->any())->method('getStores')->willReturn($initializesStores);
  85. $firstStore = $this->getMockBuilder(\Magento\Store\Api\Data\StoreInterface::class)
  86. ->setMethods(['getStoreId'])
  87. ->getMockForAbstractClass();
  88. $secondStore = $this->getMockBuilder(\Magento\Store\Api\Data\StoreInterface::class)
  89. ->setMethods(['getStoreId'])
  90. ->getMockForAbstractClass();
  91. $this->storeManager->expects($this->any())->method('getStores')->willReturn(
  92. [
  93. 1 => $firstStore,
  94. 2 => $secondStore
  95. ]
  96. );
  97. $firstStore->expects($this->any())->method('getStoreId')->willReturn($initializesStores[0]);
  98. $secondStore->expects($this->any())->method('getStoreId')->willReturn($initializesStores[1]);
  99. $urlRewriteFirst = $this->getMockBuilder(\Magento\UrlRewrite\Service\V1\Data\UrlRewrite::class)
  100. ->getMockForAbstractClass();
  101. $urlRewriteSecond = $this->getMockBuilder(\Magento\UrlRewrite\Service\V1\Data\UrlRewrite::class)
  102. ->getMockForAbstractClass();
  103. $this->urlRewriteFactory->expects($this->at(0))->method('create')->willReturn($urlRewriteFirst);
  104. $this->urlRewriteFactory->expects($this->at(1))->method('create')->willReturn($urlRewriteSecond);
  105. $cmsPage->expects($this->any())->method('getId')->willReturn($cmsPageId);
  106. $cmsPage->expects($this->any())->method('getIdentifier')->willReturn('request_path');
  107. $this->urlPathGenerator->expects($this->any())->method('getCanonicalUrlPath')->with($cmsPage)
  108. ->willReturn('cms/page/view/page_id/' . $cmsPageId);
  109. $urls = $this->urlRewriteGenerator->generate($cmsPage);
  110. $this->assertEquals(
  111. [
  112. $initializesStores[0],
  113. $initializesStores[1]
  114. ],
  115. [
  116. $urls[0]->getStoreId(),
  117. $urls[1]->getStoreId(),
  118. ]
  119. );
  120. }
  121. }