PaymentReviewTest.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Braintree\Controller\Adminhtml\Order;
  7. use Magento\Framework\Api\FilterBuilder;
  8. use Magento\Framework\Api\SearchCriteriaBuilder;
  9. use Magento\Framework\Message\MessageInterface;
  10. use Magento\Payment\Model\Method\Adapter;
  11. use Magento\Sales\Api\Data\OrderInterface;
  12. use Magento\Sales\Api\OrderRepositoryInterface;
  13. use Magento\Sales\Model\Order;
  14. use Magento\TestFramework\TestCase\AbstractBackendController;
  15. /**
  16. * Class PaymentReviewTest
  17. */
  18. class PaymentReviewTest extends AbstractBackendController
  19. {
  20. /**
  21. * @var Order
  22. */
  23. private $order;
  24. /**
  25. * @var OrderRepositoryInterface
  26. */
  27. private $orderRepository;
  28. protected function setUp()
  29. {
  30. parent::setUp();
  31. /** @var FilterBuilder $filterBuilder */
  32. $filterBuilder = $this->_objectManager->get(FilterBuilder::class);
  33. $filters = [
  34. $filterBuilder->setField(OrderInterface::INCREMENT_ID)
  35. ->setValue('100000002')
  36. ->create()
  37. ];
  38. /** @var SearchCriteriaBuilder $searchCriteriaBuilder */
  39. $searchCriteriaBuilder = $this->_objectManager->get(SearchCriteriaBuilder::class);
  40. $searchCriteria = $searchCriteriaBuilder->addFilters($filters)
  41. ->create();
  42. $this->orderRepository = $this->_objectManager->get(OrderRepositoryInterface::class);
  43. $orders = $this->orderRepository->getList($searchCriteria)
  44. ->getItems();
  45. /** @var OrderInterface $order */
  46. $this->order = array_pop($orders);
  47. }
  48. /**
  49. * @covers \Magento\Sales\Controller\Adminhtml\Order\ReviewPayment::execute
  50. * @magentoDataFixture Magento/Braintree/_files/fraud_order.php
  51. * @magentoAppArea adminhtml
  52. */
  53. public function testExecuteAccept()
  54. {
  55. $orderId = $this->order->getEntityId();
  56. $this->dispatch('backend/sales/order/reviewPayment/action/accept/order_id/' . $orderId);
  57. static::assertRedirect(static::stringContains('sales/order/view/order_id/' . $orderId));
  58. static::assertSessionMessages(
  59. static::equalTo(['The payment has been accepted.']),
  60. MessageInterface::TYPE_SUCCESS
  61. );
  62. $order = $this->orderRepository->get($orderId);
  63. static::assertEquals(Order::STATE_COMPLETE, $order->getState());
  64. static::assertEquals(Order::STATE_COMPLETE, $order->getStatus());
  65. }
  66. /**
  67. * @covers \Magento\Sales\Controller\Adminhtml\Order\ReviewPayment::execute
  68. * @magentoDataFixture Magento/Braintree/_files/fraud_order.php
  69. * @magentoAppArea adminhtml
  70. */
  71. public function testExecuteDeny()
  72. {
  73. $orderId = $this->order->getEntityId();
  74. $payment = $this->order->getPayment();
  75. $adapter = $this->getMockBuilder(Adapter::class)
  76. ->disableOriginalConstructor()
  77. ->setMethods(['denyPayment'])
  78. ->getMock();
  79. // uses the mock instead a real adapter to avoid api calls to Braintree gateway
  80. $payment->setMethodInstance($adapter);
  81. $this->orderRepository->save($this->order);
  82. $adapter->expects(static::once())
  83. ->method('denyPayment')
  84. ->with($payment)
  85. ->willReturn(true);
  86. $this->dispatch('backend/sales/order/reviewPayment/action/deny/order_id/' . $orderId);
  87. static::assertRedirect(static::stringContains('sales/order/view/order_id/' . $orderId));
  88. static::assertSessionMessages(
  89. static::equalTo(['The payment has been denied.']),
  90. MessageInterface::TYPE_SUCCESS
  91. );
  92. $order = $this->orderRepository->get($orderId);
  93. static::assertEquals(Order::STATE_CANCELED, $order->getState());
  94. static::assertEquals(Order::STATE_CANCELED, $order->getStatus());
  95. }
  96. }