CaptureDataBuilderTest.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Braintree\Test\Unit\Gateway\Request;
  7. use Magento\Braintree\Gateway\Request\CaptureDataBuilder;
  8. use Magento\Payment\Gateway\Data\PaymentDataObjectInterface;
  9. use Magento\Sales\Model\Order\Payment;
  10. use Magento\Braintree\Gateway\SubjectReader;
  11. use PHPUnit_Framework_MockObject_MockObject as MockObject;
  12. /**
  13. * Tests \Magento\Braintree\Gateway\Request\CaptureDataBuilder.
  14. */
  15. class CaptureDataBuilderTest extends \PHPUnit\Framework\TestCase
  16. {
  17. /**
  18. * @var CaptureDataBuilder
  19. */
  20. private $builder;
  21. /**
  22. * @var Payment|MockObject
  23. */
  24. private $paymentMock;
  25. /**
  26. * @var Payment|MockObject
  27. */
  28. private $paymentDOMock;
  29. /**
  30. * @var SubjectReader|MockObject
  31. */
  32. private $subjectReaderMock;
  33. protected function setUp()
  34. {
  35. $this->paymentDOMock = $this->createMock(PaymentDataObjectInterface::class);
  36. $this->paymentMock = $this->getMockBuilder(Payment::class)
  37. ->disableOriginalConstructor()
  38. ->getMock();
  39. $this->subjectReaderMock = $this->getMockBuilder(SubjectReader::class)
  40. ->disableOriginalConstructor()
  41. ->getMock();
  42. $this->builder = new CaptureDataBuilder($this->subjectReaderMock);
  43. }
  44. /**
  45. * @covers \Magento\Braintree\Gateway\Request\CaptureDataBuilder::build
  46. * @expectedException \Magento\Framework\Exception\LocalizedException
  47. * @expectedExceptionMessage No authorization transaction to proceed capture.
  48. */
  49. public function testBuildWithException()
  50. {
  51. $amount = 10.00;
  52. $buildSubject = [
  53. 'payment' => $this->paymentDOMock,
  54. 'amount' => $amount,
  55. ];
  56. $this->paymentMock->expects(self::once())
  57. ->method('getCcTransId')
  58. ->willReturn('');
  59. $this->paymentDOMock->expects(self::once())
  60. ->method('getPayment')
  61. ->willReturn($this->paymentMock);
  62. $this->subjectReaderMock->expects(self::once())
  63. ->method('readPayment')
  64. ->with($buildSubject)
  65. ->willReturn($this->paymentDOMock);
  66. $this->builder->build($buildSubject);
  67. }
  68. /**
  69. * @covers \Magento\Braintree\Gateway\Request\CaptureDataBuilder::build
  70. */
  71. public function testBuild()
  72. {
  73. $transactionId = 'b3b99d';
  74. $amount = 10.00;
  75. $expected = [
  76. 'transaction_id' => $transactionId,
  77. 'amount' => $amount,
  78. ];
  79. $buildSubject = [
  80. 'payment' => $this->paymentDOMock,
  81. 'amount' => $amount,
  82. ];
  83. $this->paymentMock->expects(self::once())
  84. ->method('getCcTransId')
  85. ->willReturn($transactionId);
  86. $this->paymentDOMock->expects(self::once())
  87. ->method('getPayment')
  88. ->willReturn($this->paymentMock);
  89. $this->subjectReaderMock->expects(self::once())
  90. ->method('readPayment')
  91. ->with($buildSubject)
  92. ->willReturn($this->paymentDOMock);
  93. $this->subjectReaderMock->expects(self::once())
  94. ->method('readAmount')
  95. ->with($buildSubject)
  96. ->willReturn($amount);
  97. static::assertEquals($expected, $this->builder->build($buildSubject));
  98. }
  99. }