Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
CardDetailsHandlerTest.php
Go to the documentation of this file.
1 <?php
7 
8 use Braintree\Transaction;
14 
18 class CardDetailsHandlerTest extends \PHPUnit\Framework\TestCase
19 {
23  private $cardHandler;
24 
28  private $paymentMock;
29 
33  private $configMock;
34 
38  private $subjectReaderMock;
39 
40  protected function setUp()
41  {
42  $this->initConfigMock();
43  $this->subjectReaderMock = $this->getMockBuilder(SubjectReader::class)
44  ->disableOriginalConstructor()
45  ->getMock();
46 
47  $this->cardHandler = new CardDetailsHandler($this->configMock, $this->subjectReaderMock);
48  }
49 
53  public function testHandle()
54  {
55  $paymentDataMock = $this->getPaymentDataObjectMock();
56  $transaction = $this->getBraintreeTransaction();
57 
58  $subject = ['payment' => $paymentDataMock];
59  $response = ['object' => $transaction];
60 
61  $this->subjectReaderMock->expects(self::once())
62  ->method('readPayment')
63  ->with($subject)
64  ->willReturn($paymentDataMock);
65  $this->subjectReaderMock->expects(self::once())
66  ->method('readTransaction')
67  ->with($response)
68  ->willReturn($transaction);
69 
70  $this->paymentMock->expects(static::once())
71  ->method('setCcLast4');
72  $this->paymentMock->expects(static::once())
73  ->method('setCcExpMonth');
74  $this->paymentMock->expects(static::once())
75  ->method('setCcExpYear');
76  $this->paymentMock->expects(static::once())
77  ->method('setCcType');
78  $this->paymentMock->expects(static::exactly(2))
79  ->method('setAdditionalInformation');
80 
81  $this->cardHandler->handle($subject, $response);
82  }
83 
87  private function initConfigMock()
88  {
89  $this->configMock = $this->getMockBuilder(Config::class)
90  ->disableOriginalConstructor()
91  ->setMethods(['getCctypesMapper'])
92  ->getMock();
93 
94  $this->configMock->expects(static::once())
95  ->method('getCctypesMapper')
96  ->willReturn([
97  'american-express' => 'AE',
98  'discover' => 'DI',
99  'jcb' => 'JCB',
100  'mastercard' => 'MC',
101  'master-card' => 'MC',
102  'visa' => 'VI'
103  ]);
104  }
105 
110  private function getPaymentDataObjectMock()
111  {
112  $this->paymentMock = $this->getMockBuilder(Payment::class)
113  ->disableOriginalConstructor()
114  ->setMethods([
115  'setCcLast4',
116  'setCcExpMonth',
117  'setCcExpYear',
118  'setCcType',
119  'setAdditionalInformation',
120  ])
121  ->getMock();
122 
123  $mock = $this->getMockBuilder(PaymentDataObject::class)
124  ->setMethods(['getPayment'])
125  ->disableOriginalConstructor()
126  ->getMock();
127 
128  $mock->expects(static::once())
129  ->method('getPayment')
130  ->willReturn($this->paymentMock);
131 
132  return $mock;
133  }
134 
139  private function getBraintreeTransaction()
140  {
141  $attributes = [
142  'creditCard' => [
143  'bin' => '5421',
144  'cardType' => 'American Express',
145  'expirationMonth' => 12,
146  'expirationYear' => 21,
147  'last4' => 1231
148  ]
149  ];
150  $transaction = Transaction::factory($attributes);
151 
152  return $transaction;
153  }
154 }
$transaction
$response
Definition: 404.php:11
$attributes
Definition: matrix.phtml:13