SetResponseAfterSaveOrderObserverTest.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Paypal\Test\Unit\Observer;
  7. /**
  8. * Class SetResponseAfterSaveOrderObserverTest
  9. */
  10. class SetResponseAfterSaveOrderObserverTest extends \PHPUnit\Framework\TestCase
  11. {
  12. /**
  13. * @var \Magento\Paypal\Observer\SetResponseAfterSaveOrderObserver
  14. */
  15. protected $_model;
  16. /**
  17. * @var \Magento\Framework\Event\Observer
  18. */
  19. protected $_observer;
  20. /**
  21. * @var \Magento\Framework\DataObject
  22. */
  23. protected $_event;
  24. /**
  25. * @var \Magento\Framework\Registry|\PHPUnit_Framework_MockObject_MockObject
  26. */
  27. protected $coreRegistryMock;
  28. /**
  29. * @var \Magento\Paypal\Helper\Hss|\PHPUnit_Framework_MockObject_MockObject
  30. */
  31. protected $paypalHssMock;
  32. /**
  33. * @var \Magento\Framework\App\ViewInterface|\PHPUnit_Framework_MockObject_MockObject
  34. */
  35. protected $viewMock;
  36. protected function setUp()
  37. {
  38. $this->_event = new \Magento\Framework\DataObject();
  39. $this->_observer = new \Magento\Framework\Event\Observer();
  40. $this->_observer->setEvent($this->_event);
  41. $this->coreRegistryMock = $this->createMock(\Magento\Framework\Registry::class);
  42. $this->paypalHssMock = $this->createPartialMock(\Magento\Paypal\Helper\Hss::class, ['getHssMethods']);
  43. $this->viewMock = $this->getMockForAbstractClass(
  44. \Magento\Framework\App\ViewInterface::class,
  45. [],
  46. '',
  47. false,
  48. true,
  49. true,
  50. []
  51. );
  52. $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  53. $this->_model = $objectManagerHelper->getObject(
  54. \Magento\Paypal\Observer\SetResponseAfterSaveOrderObserver::class,
  55. [
  56. 'coreRegistry' => $this->coreRegistryMock,
  57. 'paypalHss' => $this->paypalHssMock,
  58. 'view' => $this->viewMock,
  59. ]
  60. );
  61. }
  62. /**
  63. * Get data for test testSetResponseAfterSaveOrderSuccess
  64. *
  65. * @return array
  66. */
  67. protected function getSetResponseAfterSaveOrderTestData()
  68. {
  69. $iFrameHtml = 'iframe-html';
  70. $paymentMethod = 'method-2';
  71. return [
  72. 'order.getId' => 10,
  73. 'payment.getMethod' => $paymentMethod,
  74. 'paypalHss.getHssMethods' => [
  75. 'method-1',
  76. $paymentMethod,
  77. 'method-3'
  78. ],
  79. 'result.getData' => [
  80. 'error' => false
  81. ],
  82. 'block.toHtml' => $iFrameHtml,
  83. 'result.setData' => [
  84. 'error' => false,
  85. 'update_section' => [
  86. 'name' => 'paypaliframe',
  87. 'html' => $iFrameHtml
  88. ],
  89. 'redirect' => false,
  90. 'success' => false,
  91. ]
  92. ];
  93. }
  94. /**
  95. * Run setResponseAfterSaveOrder method test
  96. *
  97. * @return void
  98. */
  99. public function testSetResponseAfterSaveOrderSuccess()
  100. {
  101. $testData = $this->getSetResponseAfterSaveOrderTestData();
  102. $observerMock = $this->getMockBuilder(\Magento\Framework\Event\Observer::class)
  103. ->disableOriginalConstructor()
  104. ->getMock();
  105. $orderMock = $this->getMockBuilder(\Magento\Sales\Model\Order::class)
  106. ->disableOriginalConstructor()
  107. ->getMock();
  108. $paymentMock = $this->getMockBuilder(\Magento\Sales\Model\Order\Payment::class)
  109. ->disableOriginalConstructor()
  110. ->getMock();
  111. $resultMock = $this->getMockBuilder(\Magento\Framework\DataObject::class)
  112. ->disableOriginalConstructor()
  113. ->getMock();
  114. $layoutMock = $this->getMockBuilder(\Magento\Framework\View\LayoutInterface::class)
  115. ->disableOriginalConstructor()
  116. ->getMockForAbstractClass();
  117. $blockMock = $this->getMockBuilder(\Magento\Framework\View\Element\BlockInterface::class)
  118. ->disableOriginalConstructor()
  119. ->getMockForAbstractClass();
  120. $this->coreRegistryMock->expects($this->once())
  121. ->method('registry')
  122. ->with('hss_order')
  123. ->willReturn($orderMock);
  124. $orderMock->expects($this->once())
  125. ->method('getId')
  126. ->willReturn($testData['order.getId']);
  127. $orderMock->expects($this->once())
  128. ->method('getPayment')
  129. ->willReturn($paymentMock);
  130. $paymentMock->expects($this->once())
  131. ->method('getMethod')
  132. ->willReturn($testData['payment.getMethod']);
  133. $this->paypalHssMock->expects($this->once())
  134. ->method('getHssMethods')
  135. ->willReturn($testData['paypalHss.getHssMethods']);
  136. $observerMock->expects($this->atLeastOnce())
  137. ->method('getData')
  138. ->with('result')
  139. ->willReturn($resultMock);
  140. $resultMock->expects($this->once())
  141. ->method('getData')
  142. ->willReturn($testData['result.getData']);
  143. $this->viewMock->expects($this->once())
  144. ->method('loadLayout')
  145. ->with('checkout_onepage_review', true, true, false);
  146. $this->viewMock->expects($this->once())
  147. ->method('getLayout')
  148. ->willReturn($layoutMock);
  149. $layoutMock->expects($this->once())
  150. ->method('getBlock')
  151. ->with('paypal.iframe')
  152. ->willReturn($blockMock);
  153. $blockMock->expects($this->once())
  154. ->method('toHtml')
  155. ->willReturn($testData['block.toHtml']);
  156. $resultMock->expects($this->once())
  157. ->method('setData')
  158. ->with($testData['result.setData']);
  159. $this->_model->execute($observerMock);
  160. }
  161. }