PreventExpressCheckoutObserverTest.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Persistent\Test\Unit\Observer;
  7. /**
  8. * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  9. */
  10. class PreventExpressCheckoutObserverTest extends \PHPUnit\Framework\TestCase
  11. {
  12. /**
  13. * @var \Magento\Persistent\Observer\PreventExpressCheckoutObserver
  14. */
  15. protected $_model;
  16. /**
  17. * @var \Magento\Framework\Event
  18. */
  19. protected $_event;
  20. /**
  21. * @var \Magento\Framework\Event\Observer
  22. */
  23. protected $_observer;
  24. /**
  25. * Customer session
  26. *
  27. * @var \PHPUnit_Framework_MockObject_MockObject
  28. */
  29. protected $_customerSession;
  30. /**
  31. * Persistent session
  32. *
  33. * @var \PHPUnit_Framework_MockObject_MockObject
  34. */
  35. protected $_persistentSession;
  36. /**
  37. *
  38. * @var \PHPUnit_Framework_MockObject_MockObject
  39. */
  40. protected $_messageManager;
  41. /**
  42. * Url model
  43. *
  44. * @var \PHPUnit_Framework_MockObject_MockObject
  45. */
  46. protected $_url;
  47. /**
  48. * @var \PHPUnit_Framework_MockObject_MockObject
  49. */
  50. protected $_expressRedirectHelper;
  51. protected function setUp()
  52. {
  53. $helper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  54. $this->_event = new \Magento\Framework\Event();
  55. $this->_observer = new \Magento\Framework\Event\Observer();
  56. $this->_observer->setEvent($this->_event);
  57. $this->_customerSession = $this->getMockBuilder(
  58. \Magento\Customer\Model\Session::class
  59. )->disableOriginalConstructor()->setMethods(
  60. ['isLoggedIn']
  61. )->getMock();
  62. $this->_persistentSession = $this->getMockBuilder(
  63. \Magento\Persistent\Helper\Session::class
  64. )->disableOriginalConstructor()->setMethods(
  65. ['isPersistent']
  66. )->getMock();
  67. $this->_messageManager = $this->getMockBuilder(
  68. \Magento\Framework\Message\ManagerInterface::class
  69. )->disableOriginalConstructor()->setMethods(
  70. []
  71. )->getMock();
  72. $this->_url = $this->getMockBuilder(
  73. \Magento\Framework\UrlInterface::class
  74. )->disableOriginalConstructor()->setMethods(
  75. []
  76. )->getMock();
  77. $this->_expressRedirectHelper = $this->getMockBuilder(
  78. \Magento\Checkout\Helper\ExpressRedirect::class
  79. )->disableOriginalConstructor()->setMethods(
  80. ['redirectLogin']
  81. )->getMock();
  82. $this->_model = $helper->getObject(
  83. \Magento\Persistent\Observer\PreventExpressCheckoutObserver::class,
  84. [
  85. 'customerSession' => $this->_customerSession,
  86. 'persistentSession' => $this->_persistentSession,
  87. 'messageManager' => $this->_messageManager,
  88. 'url' => $this->_url,
  89. 'expressRedirectHelper' => $this->_expressRedirectHelper
  90. ]
  91. );
  92. }
  93. public function testPreventExpressCheckoutOnline()
  94. {
  95. $this->_customerSession->expects($this->once())->method('isLoggedIn')->will($this->returnValue(true));
  96. $this->_persistentSession->expects($this->once())->method('isPersistent')->will($this->returnValue(true));
  97. $this->_model->execute($this->_observer);
  98. }
  99. public function testPreventExpressCheckoutEmpty()
  100. {
  101. $this->_customerSession->expects($this->any())->method('isLoggedIn')->will($this->returnValue(false));
  102. $this->_persistentSession->expects($this->any())->method('isPersistent')->will($this->returnValue(true));
  103. $this->_event->setControllerAction(null);
  104. $this->_model->execute($this->_observer);
  105. $this->_event->setControllerAction(new \StdClass());
  106. $this->_model->execute($this->_observer);
  107. $expectedActionName = 'realAction';
  108. $unexpectedActionName = 'notAction';
  109. $request = new \Magento\Framework\DataObject();
  110. $request->setActionName($unexpectedActionName);
  111. $expressRedirectMock = $this->getMockBuilder(
  112. \Magento\Checkout\Controller\Express\RedirectLoginInterface::class
  113. )->disableOriginalConstructor()->setMethods(
  114. [
  115. 'getActionFlagList',
  116. 'getResponse',
  117. 'getCustomerBeforeAuthUrl',
  118. 'getLoginUrl',
  119. 'getRedirectActionName',
  120. 'getRequest',
  121. ]
  122. )->getMock();
  123. $expressRedirectMock->expects($this->any())->method('getRequest')->will($this->returnValue($request));
  124. $expressRedirectMock->expects(
  125. $this->any()
  126. )->method(
  127. 'getRedirectActionName'
  128. )->will(
  129. $this->returnValue($expectedActionName)
  130. );
  131. $this->_event->setControllerAction($expressRedirectMock);
  132. $this->_model->execute($this->_observer);
  133. $expectedAuthUrl = 'expectedAuthUrl';
  134. $request->setActionName($expectedActionName);
  135. $this->_url->expects($this->once())->method('getUrl')->will($this->returnValue($expectedAuthUrl));
  136. $this->_expressRedirectHelper->expects(
  137. $this->once()
  138. )->method(
  139. 'redirectLogin'
  140. )->with(
  141. $expressRedirectMock,
  142. $expectedAuthUrl
  143. );
  144. $this->_model->execute($this->_observer);
  145. }
  146. }