HostedproTest.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Paypal\Model;
  7. use Magento\Framework\DataObject;
  8. use Magento\Paypal\Model\Api\Nvp;
  9. use Magento\Paypal\Model\Config;
  10. use Magento\Paypal\Model\Hostedpro;
  11. use Magento\Paypal\Model\Hostedpro\RequestFactory;
  12. use Magento\Paypal\Model\ProFactory;
  13. use Magento\Sales\Model\Order;
  14. use Magento\TestFramework\Helper\Bootstrap;
  15. /**
  16. * Class HostedproTest
  17. * @package Magento\Paypal\Model
  18. */
  19. class HostedproTest extends \PHPUnit\Framework\TestCase
  20. {
  21. /**
  22. * @var \Magento\Framework\ObjectManagerInterface
  23. */
  24. private $objectManager;
  25. /**
  26. * @var \Magento\Paypal\Model\Hostedpro
  27. */
  28. private $model;
  29. /**
  30. * @var \Magento\Paypal\Model\Api\Nvp|\PHPUnit_Framework_MockObject_MockObject
  31. */
  32. private $api;
  33. protected function setUp()
  34. {
  35. $this->objectManager = Bootstrap::getObjectManager();
  36. $this->api = $this->getMockBuilder(Nvp::class)
  37. ->disableOriginalConstructor()
  38. ->setMethods(['call'])
  39. ->getMock();
  40. $proFactory = $this->getProFactory();
  41. $this->model = $this->objectManager
  42. ->create(Hostedpro::class, [
  43. 'proFactory' => $proFactory
  44. ]);
  45. }
  46. /**
  47. * @covers \Magento\Paypal\Model\Hostedpro::initialize
  48. * @magentoDataFixture Magento/Paypal/_files/order_hostedpro.php
  49. */
  50. public function testInitialize()
  51. {
  52. /** @var \Magento\Sales\Model\Order $order */
  53. $order = $this->objectManager->create(Order::class);
  54. $order->loadByIncrementId('100000001');
  55. $payment = $order->getPayment();
  56. $this->model->setInfoInstance($payment);
  57. $this->api->expects(static::once())
  58. ->method('call')
  59. ->willReturn([
  60. 'EMAILLINK' => 'https://securepayments.sandbox.paypal.com/webapps/HostedSoleSolutionApp/webflow/'
  61. ]);
  62. $state = $this->objectManager->create(DataObject::class);
  63. $this->model->initialize(Config::PAYMENT_ACTION_AUTH, $state);
  64. static::assertEquals(Order::STATE_PENDING_PAYMENT, $state->getState());
  65. static::assertEquals(Order::STATE_PENDING_PAYMENT, $state->getStatus());
  66. static::assertFalse($state->getIsNotified());
  67. }
  68. /**
  69. * Get mock for config
  70. * @return \PHPUnit_Framework_MockObject_MockObject
  71. */
  72. protected function getConfig()
  73. {
  74. $config = $this->getMockBuilder(Config::class)
  75. ->disableOriginalConstructor()
  76. ->setMethods(['getValue'])
  77. ->getMock();
  78. $config->expects(static::any())
  79. ->method('getValue')
  80. ->with('payment_action')
  81. ->willReturn(Config::PAYMENT_ACTION_AUTH);
  82. return $config;
  83. }
  84. /**
  85. * Create mock for Pro factory
  86. * @return \PHPUnit_Framework_MockObject_MockObject
  87. */
  88. protected function getProFactory()
  89. {
  90. $pro = $this->getMockBuilder(Pro::class)
  91. ->disableOriginalConstructor()
  92. ->setMethods(['getApi', 'setMethod', 'getConfig', '__wakeup'])
  93. ->getMock();
  94. $config = $this->getConfig();
  95. $pro->expects(static::any())
  96. ->method('getConfig')
  97. ->willReturn($config);
  98. $pro->expects(static::any())
  99. ->method('getApi')
  100. ->willReturn($this->api);
  101. $proFactory = $this->getMockBuilder(ProFactory::class)
  102. ->disableOriginalConstructor()
  103. ->setMethods(['create'])
  104. ->getMock();
  105. $proFactory->expects(static::once())
  106. ->method('create')
  107. ->willReturn($pro);
  108. return $proFactory;
  109. }
  110. }