RequestTest.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Authorizenet\Model\Directpost;
  7. use Magento\Authorizenet\Model\Directpost;
  8. use Magento\Framework\Api\FilterBuilder;
  9. use Magento\Framework\Api\SearchCriteriaBuilder;
  10. use Magento\Framework\App\ObjectManager;
  11. use Magento\Sales\Api\Data\OrderInterface;
  12. use Magento\Sales\Api\OrderRepositoryInterface;
  13. use Magento\Sales\Model\Order;
  14. use Magento\TestFramework\Helper\Bootstrap;
  15. use PHPUnit\Framework\MockObject_MockObject as MockObject;
  16. /**
  17. * Class contains tests for Authorize.net Direct Post request handler
  18. */
  19. class RequestTest extends \PHPUnit\Framework\TestCase
  20. {
  21. /**
  22. * @var Order
  23. */
  24. private $order;
  25. /**
  26. * @var Request
  27. */
  28. private $request;
  29. /**
  30. * @var ObjectManager
  31. */
  32. private $objectManager;
  33. protected function setUp()
  34. {
  35. $this->objectManager = Bootstrap::getObjectManager();
  36. $this->order = $this->getOrder();
  37. $this->request = $this->objectManager->get(Request::class);
  38. }
  39. /**
  40. * @covers \Magento\Authorizenet\Model\Directpost\Request::setDataFromOrder
  41. * @magentoDataFixture Magento/Authorizenet/_files/order.php
  42. */
  43. public function testSetDataFromOrder()
  44. {
  45. $customerEmail = 'john.doe@example.com';
  46. $merchantEmail = 'merchant@example.com';
  47. /** @var Directpost|MockObject $payment */
  48. $payment = $this->getMockBuilder(Directpost::class)
  49. ->disableOriginalConstructor()
  50. ->setMethods(['getConfigData'])
  51. ->getMock();
  52. $payment->expects(static::exactly(2))
  53. ->method('getConfigData')
  54. ->willReturnMap([
  55. ['email_customer', null, $customerEmail],
  56. ['merchant_email', null, $merchantEmail]
  57. ]);
  58. $result = $this->request->setDataFromOrder($this->order, $payment);
  59. static::assertEquals('US', $result->getXCountry());
  60. static::assertEquals('UK', $result->getXShipToCountry());
  61. static::assertEquals($customerEmail, $result->getXEmailCustomer());
  62. static::assertEquals($merchantEmail, $result->getXMerchantEmail());
  63. }
  64. /**
  65. * Get stored order
  66. * @return Order
  67. */
  68. private function getOrder()
  69. {
  70. /** @var FilterBuilder $filterBuilder */
  71. $filterBuilder = $this->objectManager->get(FilterBuilder::class);
  72. $filters = [
  73. $filterBuilder->setField(OrderInterface::INCREMENT_ID)
  74. ->setValue('100000002')
  75. ->create()
  76. ];
  77. /** @var SearchCriteriaBuilder $searchCriteriaBuilder */
  78. $searchCriteriaBuilder = $this->objectManager->get(SearchCriteriaBuilder::class);
  79. $searchCriteria = $searchCriteriaBuilder->addFilters($filters)
  80. ->create();
  81. $orderRepository = $this->objectManager->get(OrderRepositoryInterface::class);
  82. $orders = $orderRepository->getList($searchCriteria)
  83. ->getItems();
  84. /** @var OrderInterface $order */
  85. return array_pop($orders);
  86. }
  87. }