Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ProcessUrlRewriteSavingObserverTest.php
Go to the documentation of this file.
1 <?php
7 
16 
20 class ProcessUrlRewriteSavingObserverTest extends \PHPUnit\Framework\TestCase
21 {
26 
30  protected $urlPersistMock;
31 
36 
40  protected $eventObserverMock;
41 
45  protected $pageMock;
46 
50  protected $eventMock;
51 
55  protected $observer;
56 
60  protected function setUp()
61  {
62  $this->objectManagerHelper = new ObjectManagerHelper($this);
63 
64  $this->urlPersistMock = $this->getMockBuilder(UrlPersistInterface::class)
65  ->getMockForAbstractClass();
66  $this->cmsPageUrlRewriteGeneratorMock = $this->getMockBuilder(CmsPageUrlRewriteGenerator::class)
67  ->disableOriginalConstructor()
68  ->getMock();
69  $this->pageMock = $this->getMockBuilder(Page::class)
70  ->setMethods(['getId', 'dataHasChangedFor'])
71  ->disableOriginalConstructor()
72  ->getMock();
73  $this->eventMock = $this->getMockBuilder(Event::class)
74  ->setMethods(['getObject'])
75  ->disableOriginalConstructor()
76  ->getMock();
77  $this->eventObserverMock = $this->getMockBuilder(EventObserver::class)
78  ->disableOriginalConstructor()
79  ->getMock();
80 
81  $this->eventObserverMock->expects($this->once())
82  ->method('getEvent')
83  ->willReturn($this->eventMock);
84  $this->eventMock->expects($this->once())
85  ->method('getObject')
86  ->willReturn($this->pageMock);
87 
88  $this->observer = $this->objectManagerHelper->getObject(
89  ProcessUrlRewriteSavingObserver::class,
90  [
91  'cmsPageUrlRewriteGenerator' => $this->cmsPageUrlRewriteGeneratorMock,
92  'urlPersist' => $this->urlPersistMock,
93  ]
94  );
95  }
96 
103  public function testExecute($identifierChanged, $storeIdChanged)
104  {
105  $pageId = 1;
106  $urls = ['first url', 'second url'];
107 
108  $this->pageMock->expects($this->any())
109  ->method('dataHasChangedFor')
110  ->willReturnMap([
111  ['identifier', $identifierChanged],
112  ['store_id', $storeIdChanged],
113  ]);
114  $this->pageMock->expects($this->once())
115  ->method('getId')
116  ->willReturn($pageId);
117  $this->cmsPageUrlRewriteGeneratorMock->expects($this->once())
118  ->method('generate')
119  ->with($this->pageMock)
120  ->willReturn($urls);
121  $this->urlPersistMock->expects($this->once())
122  ->method('deleteByData')
123  ->with([
124  UrlRewrite::ENTITY_ID => $pageId,
126  ]);
127  $this->urlPersistMock->expects($this->once())
128  ->method('replace')
129  ->with($urls);
130 
131  $this->observer->execute($this->eventObserverMock);
132  }
133 
137  public function executeDataProvider()
138  {
139  return [
140  ['identifier' => true, 'storeIdChanged' => true],
141  ['identifier' => true, 'storeIdChanged' => false],
142  ['identifier' => false, 'storeIdChanged' => true],
143  ];
144  }
145 
150  {
151  $this->pageMock->expects($this->any())
152  ->method('dataHasChangedFor')
153  ->willReturnMap([
154  ['identifier', false],
155  ['store_id', false],
156  ]);
157  $this->pageMock->expects($this->never())
158  ->method('getId');
159  $this->cmsPageUrlRewriteGeneratorMock->expects($this->never())
160  ->method('generate');
161  $this->urlPersistMock->expects($this->never())
162  ->method('deleteByData');
163  $this->urlPersistMock->expects($this->never())
164  ->method('replace');
165 
166  $this->observer->execute($this->eventObserverMock);
167  }
168 }