NoCookiesObserverTest.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Cms\Test\Unit\Observer;
  7. class NoCookiesObserverTest extends \PHPUnit\Framework\TestCase
  8. {
  9. /**
  10. * @var \Magento\Cms\Observer\NoCookiesObserver
  11. */
  12. protected $noCookiesObserver;
  13. /**
  14. * @var \Magento\Cms\Helper\Page|\PHPUnit_Framework_MockObject_MockObject
  15. */
  16. protected $cmsPageMock;
  17. /**
  18. * @var \Magento\Framework\App\Config\ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
  19. */
  20. protected $scopeConfigMock;
  21. /**
  22. * @var \Magento\Framework\Event\Observer|\PHPUnit_Framework_MockObject_MockObject
  23. */
  24. protected $observerMock;
  25. /**
  26. * @var \Magento\Framework\Event|\PHPUnit_Framework_MockObject_MockObject
  27. */
  28. protected $eventMock;
  29. /**
  30. * @var \Magento\Framework\DataObject|\PHPUnit_Framework_MockObject_MockObject
  31. */
  32. protected $objectMock;
  33. protected function setUp()
  34. {
  35. $this->cmsPageMock = $this
  36. ->getMockBuilder(\Magento\Cms\Helper\Page::class)
  37. ->disableOriginalConstructor()
  38. ->getMock();
  39. $this->scopeConfigMock = $this
  40. ->getMockBuilder(\Magento\Framework\App\Config\ScopeConfigInterface::class)
  41. ->disableOriginalConstructor()
  42. ->getMock();
  43. $this->observerMock = $this
  44. ->getMockBuilder(\Magento\Framework\Event\Observer::class)
  45. ->disableOriginalConstructor()
  46. ->getMock();
  47. $this->eventMock = $this
  48. ->getMockBuilder(\Magento\Framework\Event::class)
  49. ->setMethods(
  50. [
  51. 'getStatus',
  52. 'getRedirect',
  53. ]
  54. )
  55. ->disableOriginalConstructor()
  56. ->getMock();
  57. $this->objectMock = $this
  58. ->getMockBuilder(\Magento\Framework\DataObject::class)
  59. ->setMethods(
  60. [
  61. 'setLoaded',
  62. 'setForwardModule',
  63. 'setForwardController',
  64. 'setForwardAction',
  65. 'setRedirectUrl',
  66. 'setRedirect',
  67. 'setPath',
  68. 'setArguments',
  69. ]
  70. )
  71. ->disableOriginalConstructor()
  72. ->getMock();
  73. $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  74. $this->noCookiesObserver = $objectManager->getObject(
  75. \Magento\Cms\Observer\NoCookiesObserver::class,
  76. [
  77. 'cmsPage' => $this->cmsPageMock,
  78. 'scopeConfig' => $this->scopeConfigMock
  79. ]
  80. );
  81. }
  82. /**
  83. * @covers \Magento\Cms\Observer\NoCookiesObserver::execute
  84. * @param string $pageUrl
  85. * @dataProvider noCookiesDataProvider
  86. */
  87. public function testNoCookies($pageUrl)
  88. {
  89. $pageId = 1;
  90. $this->observerMock
  91. ->expects($this->atLeastOnce())
  92. ->method('getEvent')
  93. ->willReturn($this->eventMock);
  94. $this->eventMock
  95. ->expects($this->atLeastOnce())
  96. ->method('getRedirect')
  97. ->willReturn($this->objectMock);
  98. $this->scopeConfigMock
  99. ->expects($this->atLeastOnce())
  100. ->method('getValue')
  101. ->with('web/default/cms_no_cookies', 'store')
  102. ->willReturn($pageId);
  103. $this->cmsPageMock
  104. ->expects($this->atLeastOnce())
  105. ->method('getPageUrl')
  106. ->with($pageId)
  107. ->willReturn($pageUrl);
  108. $this->objectMock
  109. ->expects($this->any())
  110. ->method('setRedirectUrl')
  111. ->with($pageUrl)
  112. ->willReturnSelf();
  113. $this->objectMock
  114. ->expects($this->any())
  115. ->method('setRedirect')
  116. ->with(true)
  117. ->willReturnSelf();
  118. $this->objectMock
  119. ->expects($this->any())
  120. ->method('setPath')
  121. ->with('cookie/index/noCookies')
  122. ->willReturnSelf();
  123. $this->objectMock
  124. ->expects($this->any())
  125. ->method('setArguments')
  126. ->with([])
  127. ->willReturnSelf();
  128. $this->assertEquals($this->noCookiesObserver, $this->noCookiesObserver->execute($this->observerMock));
  129. }
  130. /**
  131. * @return array
  132. */
  133. public function noCookiesDataProvider()
  134. {
  135. return [
  136. 'url IS empty' => ['pageUrl' => ''],
  137. 'url NOT empty' => ['pageUrl' => '/some/url']
  138. ];
  139. }
  140. }