Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
CmsPageUrlRewriteGeneratorTest.php
Go to the documentation of this file.
1 <?php
7 
8 class CmsPageUrlRewriteGeneratorTest extends \PHPUnit\Framework\TestCase
9 {
13  private $objectManager;
14 
18  private $storeManager;
19 
23  private $urlRewriteFactory;
24 
28  private $urlPathGenerator;
29 
33  private $urlRewriteGenerator;
34 
38  protected function setUp()
39  {
40  $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
41  $this->storeManager = $this->getMockBuilder(\Magento\Store\Model\StoreManagerInterface::class)
42  ->getMockForAbstractClass();
43  $this->urlRewriteFactory = $this->getMockBuilder(\Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory::class)
44  ->setMethods(['create'])
45  ->disableOriginalConstructor()
46  ->getMock();
47  $this->urlPathGenerator = $this->getMockBuilder(\Magento\CmsUrlRewrite\Model\CmsPageUrlPathGenerator::class)
48  ->disableOriginalConstructor()
49  ->getMock();
50  $this->urlRewriteGenerator = $this->objectManager->getObject(
51  \Magento\CmsUrlRewrite\Model\CmsPageUrlRewriteGenerator::class,
52  [
53  'storeManager' => $this->storeManager,
54  'urlRewriteFactory' => $this->urlRewriteFactory,
55  'cmsPageUrlPathGenerator' => $this->urlPathGenerator
56  ]
57  );
58  }
59 
60  public function testGenerateForAllStores()
61  {
62  $initializesStores = [0];
63  $cmsPageId = 1;
64  $cmsPage = $this->getMockBuilder(\Magento\Cms\Model\Page::class)
65  ->disableOriginalConstructor()
66  ->getMock();
67  $cmsPage->expects($this->any())->method('getStores')->willReturn($initializesStores);
68  $store = $this->getMockBuilder(\Magento\Store\Api\Data\StoreInterface::class)
69  ->setMethods(['getStoreId'])
70  ->getMockForAbstractClass();
71  $this->storeManager->expects($this->any())->method('getStores')->willReturn([$store]);
72  $store->expects($this->any())->method('getStoreId')->willReturn($initializesStores[0]);
73  $urlRewrite = $this->getMockBuilder(\Magento\UrlRewrite\Service\V1\Data\UrlRewrite::class)
74  ->getMockForAbstractClass();
75  $this->urlRewriteFactory->expects($this->any())->method('create')->willReturn($urlRewrite);
76  $cmsPage->expects($this->any())->method('getId')->willReturn($cmsPageId);
77  $cmsPage->expects($this->any())->method('getIdentifier')->willReturn('request_path');
78  $this->urlPathGenerator->expects($this->any())->method('getCanonicalUrlPath')->with($cmsPage)
79  ->willReturn('cms/page/view/page_id/' . $cmsPageId);
80 
81  $urls = $this->urlRewriteGenerator->generate($cmsPage);
82  $this->assertEquals($initializesStores[0], $urls[0]->getStoreId());
83  $this->assertFalse(isset($urls[1]));
84  }
85 
87  {
88  $initializesStores = [1, 2];
89  $cmsPageId = 1;
90  $cmsPage = $this->getMockBuilder(\Magento\Cms\Model\Page::class)
91  ->disableOriginalConstructor()
92  ->getMock();
93  $cmsPage->expects($this->any())->method('getStores')->willReturn($initializesStores);
94  $firstStore = $this->getMockBuilder(\Magento\Store\Api\Data\StoreInterface::class)
95  ->setMethods(['getStoreId'])
96  ->getMockForAbstractClass();
97  $secondStore = $this->getMockBuilder(\Magento\Store\Api\Data\StoreInterface::class)
98  ->setMethods(['getStoreId'])
99  ->getMockForAbstractClass();
100  $this->storeManager->expects($this->any())->method('getStores')->willReturn(
101  [
102  1 => $firstStore,
103  2 => $secondStore
104  ]
105  );
106  $firstStore->expects($this->any())->method('getStoreId')->willReturn($initializesStores[0]);
107  $secondStore->expects($this->any())->method('getStoreId')->willReturn($initializesStores[1]);
108 
109  $urlRewriteFirst = $this->getMockBuilder(\Magento\UrlRewrite\Service\V1\Data\UrlRewrite::class)
110  ->getMockForAbstractClass();
111  $urlRewriteSecond = $this->getMockBuilder(\Magento\UrlRewrite\Service\V1\Data\UrlRewrite::class)
112  ->getMockForAbstractClass();
113  $this->urlRewriteFactory->expects($this->at(0))->method('create')->willReturn($urlRewriteFirst);
114  $this->urlRewriteFactory->expects($this->at(1))->method('create')->willReturn($urlRewriteSecond);
115 
116  $cmsPage->expects($this->any())->method('getId')->willReturn($cmsPageId);
117  $cmsPage->expects($this->any())->method('getIdentifier')->willReturn('request_path');
118  $this->urlPathGenerator->expects($this->any())->method('getCanonicalUrlPath')->with($cmsPage)
119  ->willReturn('cms/page/view/page_id/' . $cmsPageId);
120  $urls = $this->urlRewriteGenerator->generate($cmsPage);
121  $this->assertEquals(
122  [
123  $initializesStores[0],
124  $initializesStores[1]
125  ],
126  [
127  $urls[0]->getStoreId(),
128  $urls[1]->getStoreId(),
129  ]
130  );
131  }
132 }
$secondStore