Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ReviewPaymentTest.php
Go to the documentation of this file.
1 <?php
7 
13 class ReviewPaymentTest extends \PHPUnit\Framework\TestCase
14 {
16  protected $reviewPayment;
17 
19  protected $contextMock;
20 
22  protected $orderMock;
23 
26 
29 
31  protected $requestMock;
32 
34  protected $paymentMock;
35 
38 
43 
48 
52  protected $loggerMock;
53 
57  protected function setUp()
58  {
59  $this->contextMock = $this->createPartialMock(\Magento\Backend\App\Action\Context::class, [
60  'getRequest',
61  'getResponse',
62  'getMessageManager',
63  'getRedirect',
64  'getObjectManager',
65  'getSession',
66  'getActionFlag',
67  'getHelper',
68  'getResultRedirectFactory'
69  ]);
70  $this->orderManagementMock = $this->getMockBuilder(\Magento\Sales\Api\OrderManagementInterface::class)
71  ->getMockForAbstractClass();
72  $this->orderRepositoryMock = $this->getMockBuilder(\Magento\Sales\Api\OrderRepositoryInterface::class)
73  ->getMockForAbstractClass();
74  $this->loggerMock = $this->getMockBuilder(\Psr\Log\LoggerInterface::class)
75  ->getMockForAbstractClass();
76  $this->orderMock = $this->getMockBuilder(\Magento\Sales\Api\Data\OrderInterface::class)
77  ->setMethods(['getPayment'])
78  ->getMockForAbstractClass();
79  $this->messageManagerMock = $this->createPartialMock(
80  \Magento\Framework\Message\Manager::class,
81  ['addSuccessMessage', 'addErrorMessage']
82  );
83 
84  $this->resultRedirectFactoryMock = $this->createPartialMock(
85  \Magento\Backend\Model\View\Result\RedirectFactory::class,
86  ['create']
87  );
88 
89  $this->paymentMock = $this->createPartialMock(
90  \Magento\Sales\Model\Order\Payment::class,
91  ['update', 'getIsTransactionApproved']
92  );
93 
94  $this->resultRedirectMock = $this->createPartialMock(
95  \Magento\Backend\Model\View\Result\Redirect::class,
96  ['setPath']
97  );
98 
99  $this->requestMock = $this->getMockBuilder(\Magento\Framework\App\Request\Http::class)
100  ->setMethods(['getParam'])
101  ->disableOriginalConstructor()->getMock();
102  $this->contextMock->expects($this->once())->method('getRequest')->willReturn($this->requestMock);
103  $this->contextMock->expects($this->once())->method('getMessageManager')->willReturn($this->messageManagerMock);
104  $this->contextMock->expects($this->once())
105  ->method('getResultRedirectFactory')
106  ->willReturn($this->resultRedirectFactoryMock);
107 
108  $this->reviewPayment = (new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this))->getObject(
109  \Magento\Sales\Controller\Adminhtml\Order\ReviewPayment::class,
110  [
111  'context' => $this->contextMock,
112  'orderManager' => $this->orderManagementMock,
113  'orderRepository' => $this->orderRepositoryMock
114  ]
115  );
116  }
117 
121  public function testExecuteUpdateAction()
122  {
123  $orderId = 30;
124  $action = 'update';
125 
126  $this->requestMock->expects($this->at(0))->method('getParam')->with('order_id')->willReturn($orderId);
127  $this->requestMock->expects($this->at(1))->method('getParam')->with('action')->willReturn($action);
128 
129  $this->resultRedirectFactoryMock->expects($this->once())->method('create')
130  ->willReturn($this->resultRedirectMock);
131 
132  $this->orderRepositoryMock->expects($this->once())
133  ->method('get')
134  ->with($orderId)
135  ->willReturn($this->orderMock);
136  $this->orderMock->expects($this->any())->method('getEntityId')->willReturn($orderId);
137  $this->orderMock->expects($this->any())->method('getPayment')->willReturn($this->paymentMock);
138  $this->orderRepositoryMock->expects($this->once())
139  ->method('save')
140  ->with($this->orderMock)
141  ->willReturnSelf();
142 
143  $this->paymentMock->expects($this->once())->method('update');
144  $this->paymentMock->expects($this->any())->method('getIsTransactionApproved')->willReturn(true);
145 
146  $this->messageManagerMock->expects($this->once())->method('addSuccessMessage');
147 
148  $this->resultRedirectMock->expects($this->once())
149  ->method('setPath')
150  ->with('sales/order/view')
151  ->willReturnSelf();
152 
153  $result = $this->reviewPayment->execute();
154  $this->assertEquals($this->resultRedirectMock, $result);
155  }
156 }