123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Braintree\Test\Unit\Gateway\Request;
- use Magento\Braintree\Gateway\Config\Config;
- use Magento\Braintree\Gateway\SubjectReader;
- use Magento\Braintree\Gateway\Request\ThreeDSecureDataBuilder;
- use Magento\Payment\Gateway\Data\Order\AddressAdapter;
- use Magento\Payment\Gateway\Data\Order\OrderAdapter;
- use Magento\Payment\Gateway\Data\PaymentDataObjectInterface;
- use PHPUnit_Framework_MockObject_MockObject as MockObject;
- /**
- * Tests \Magento\Braintree\Gateway\Request\ThreeDSecureDataBuilder.
- */
- class ThreeDSecureDataBuilderTest extends \PHPUnit\Framework\TestCase
- {
- /**
- * @var ThreeDSecureDataBuilder
- */
- private $builder;
- /**
- * @var Config|MockObject
- */
- private $configMock;
- /**
- * @var PaymentDataObjectInterface|MockObject
- */
- private $paymentDOMock;
- /**
- * @var OrderAdapter|MockObject
- */
- private $orderMock;
- /**
- * @var AddressAdapter|MockObject
- */
- private $billingAddressMock;
- /**
- * @var SubjectReader|\PHPUnit_Framework_MockObject_MockObject
- */
- private $subjectReaderMock;
- /**
- * @var int
- */
- private $storeId = 1;
- /**
- * @inheritdoc
- */
- protected function setUp()
- {
- $this->initOrderMock();
- $this->paymentDOMock = $this->getMockBuilder(PaymentDataObjectInterface::class)
- ->disableOriginalConstructor()
- ->setMethods(['getOrder', 'getPayment'])
- ->getMock();
- $this->paymentDOMock->expects(static::once())
- ->method('getOrder')
- ->willReturn($this->orderMock);
- $this->configMock = $this->getMockBuilder(Config::class)
- ->setMethods(['isVerify3DSecure', 'getThresholdAmount', 'get3DSecureSpecificCountries'])
- ->disableOriginalConstructor()
- ->getMock();
- $this->subjectReaderMock = $this->getMockBuilder(SubjectReader::class)
- ->disableOriginalConstructor()
- ->getMock();
- $this->builder = new ThreeDSecureDataBuilder($this->configMock, $this->subjectReaderMock);
- }
- /**
- * @param bool $verify
- * @param float $thresholdAmount
- * @param string $countryId
- * @param array $countries
- * @param array $expected
- * @covers \Magento\Braintree\Gateway\Request\ThreeDSecureDataBuilder::build
- * @dataProvider buildDataProvider
- */
- public function testBuild($verify, $thresholdAmount, $countryId, array $countries, array $expected)
- {
- $buildSubject = [
- 'payment' => $this->paymentDOMock,
- 'amount' => 25,
- ];
- $this->configMock->expects(static::once())
- ->method('isVerify3DSecure')
- ->with(self::equalTo($this->storeId))
- ->willReturn($verify);
- $this->configMock->expects(static::any())
- ->method('getThresholdAmount')
- ->with(self::equalTo($this->storeId))
- ->willReturn($thresholdAmount);
- $this->configMock->expects(static::any())
- ->method('get3DSecureSpecificCountries')
- ->with(self::equalTo($this->storeId))
- ->willReturn($countries);
- $this->billingAddressMock->expects(static::any())
- ->method('getCountryId')
- ->willReturn($countryId);
- $this->subjectReaderMock->expects(self::once())
- ->method('readPayment')
- ->with($buildSubject)
- ->willReturn($this->paymentDOMock);
- $this->subjectReaderMock->expects(self::once())
- ->method('readAmount')
- ->with($buildSubject)
- ->willReturn(25);
- $result = $this->builder->build($buildSubject);
- self::assertEquals($expected, $result);
- }
- /**
- * Gets list of variations to build request data.
- *
- * @return array
- */
- public function buildDataProvider()
- {
- return [
- ['verify' => true, 'amount' => 20, 'countryId' => 'US', 'countries' => [], 'result' => [
- 'options' => [
- 'three_d_secure' => [
- 'required' => true
- ]
- ]
- ]],
- ['verify' => true, 'amount' => 0, 'countryId' => 'US', 'countries' => ['US', 'GB'], 'result' => [
- 'options' => [
- 'three_d_secure' => [
- 'required' => true
- ]
- ]
- ]],
- ['verify' => true, 'amount' => 40, 'countryId' => 'US', 'countries' => [], 'result' => []],
- ['verify' => false, 'amount' => 40, 'countryId' => 'US', 'countries' => [], 'result' => []],
- ['verify' => false, 'amount' => 20, 'countryId' => 'US', 'countries' => [], 'result' => []],
- ['verify' => true, 'amount' => 20, 'countryId' => 'CA', 'countries' => ['US', 'GB'], 'result' => []],
- ];
- }
- /**
- * Creates mock object for order adapter.
- *
- * @return void
- */
- private function initOrderMock()
- {
- $this->billingAddressMock = $this->getMockBuilder(AddressAdapter::class)
- ->disableOriginalConstructor()
- ->setMethods(['getCountryId'])
- ->getMock();
- $this->orderMock = $this->getMockBuilder(OrderAdapter::class)
- ->disableOriginalConstructor()
- ->setMethods(['getBillingAddress', 'getStoreId'])
- ->getMock();
- $this->orderMock->expects(static::any())
- ->method('getBillingAddress')
- ->willReturn($this->billingAddressMock);
- $this->orderMock->method('getStoreId')
- ->willReturn($this->storeId);
- }
- }
|