BillingAgreementConfigProviderTest.php 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Paypal\Test\Unit\Model;
  7. use Magento\Customer\Helper\Session\CurrentCustomer;
  8. use Magento\Paypal\Model\Billing\AgreementFactory;
  9. use Magento\Paypal\Model\BillingAgreementConfigProvider;
  10. use Magento\Paypal\Model\Payment\Method\Billing\AbstractAgreement;
  11. class BillingAgreementConfigProviderTest extends \PHPUnit\Framework\TestCase
  12. {
  13. /**
  14. * @var CurrentCustomer|\PHPUnit_Framework_MockObject_MockObject
  15. */
  16. protected $currentCustomerMock;
  17. /**
  18. * @var AgreementFactory|\PHPUnit_Framework_MockObject_MockObject
  19. */
  20. protected $agreementFactoryMock;
  21. protected function setUp()
  22. {
  23. $this->currentCustomerMock = $this->getMockBuilder(\Magento\Customer\Helper\Session\CurrentCustomer::class)
  24. ->setMethods(['getCustomerId'])
  25. ->disableOriginalConstructor()
  26. ->getMock();
  27. $this->agreementFactoryMock = $this->getMockBuilder(\Magento\Paypal\Model\Billing\AgreementFactory::class)
  28. ->setMethods(['create'])
  29. ->disableOriginalConstructor()
  30. ->getMock();
  31. $this->configProvider = new BillingAgreementConfigProvider(
  32. $this->currentCustomerMock,
  33. $this->agreementFactoryMock
  34. );
  35. }
  36. public function testGetConfig()
  37. {
  38. $customerId = 1;
  39. $agreements = [
  40. new \Magento\Framework\DataObject(['id' => 1, 'reference_id' => 'DFG123ER']),
  41. new \Magento\Framework\DataObject(['id' => 2, 'reference_id' => 'JKT153ER']),
  42. ];
  43. $expected = [
  44. 'payment' => [
  45. 'paypalBillingAgreement' => [
  46. 'agreements' => [
  47. ['id' => 1, 'referenceId' => 'DFG123ER'],
  48. ['id' => 2, 'referenceId' => 'JKT153ER']
  49. ],
  50. 'transportName' => AbstractAgreement::TRANSPORT_BILLING_AGREEMENT_ID
  51. ]
  52. ]
  53. ];
  54. $this->currentCustomerMock->expects($this->once())->method('getCustomerId')->willReturn($customerId);
  55. $agreementMock = $this->getMockBuilder(\Magento\Paypal\Model\Billing\Agreement::class)
  56. ->disableOriginalConstructor()
  57. ->getMock();
  58. $agreementMock->expects($this->once())
  59. ->method('getAvailableCustomerBillingAgreements')
  60. ->with($customerId)
  61. ->willReturn($agreements);
  62. $this->agreementFactoryMock->expects($this->once())->method('create')->willReturn($agreementMock);
  63. $this->assertEquals($expected, $this->configProvider->getConfig());
  64. }
  65. public function testGetConfigWithEmptyCustomer()
  66. {
  67. $customerId = 0;
  68. $expected = [
  69. 'payment' => [
  70. 'paypalBillingAgreement' => [
  71. 'agreements'=> [],
  72. 'transportName' => AbstractAgreement::TRANSPORT_BILLING_AGREEMENT_ID
  73. ]
  74. ]
  75. ];
  76. $this->currentCustomerMock->expects($this->once())->method('getCustomerId')->willReturn($customerId);
  77. $this->agreementFactoryMock->expects($this->never())->method('create');
  78. $this->assertEquals($expected, $this->configProvider->getConfig());
  79. }
  80. }