/**
  * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
  */
 protected function setUp()
 {
     $this->contextMock = $this->getMockBuilder('\\Magento\\Framework\\Model\\Context')->disableOriginalConstructor()->getMock();
     $this->configMock = $this->getMockBuilder('\\Magento\\Braintree\\Model\\Config\\Cc')->disableOriginalConstructor()->getMock();
     $this->vaultMock = $this->getMockBuilder('\\Magento\\Braintree\\Model\\Vault')->disableOriginalConstructor()->getMock();
     $this->registryMock = $this->getMockBuilder('\\Magento\\Framework\\Registry')->disableOriginalConstructor()->getMock();
     $this->salesTransactionCollectionFactoryMock = $this->getMockBuilder('\\Magento\\Sales\\Model\\ResourceModel\\Order\\Payment\\Transaction\\CollectionFactory')->disableOriginalConstructor()->setMethods(['create'])->getMock();
     $this->productMetaDataMock = $this->getMockBuilder('\\Magento\\Framework\\App\\ProductMetadataInterface')->disableOriginalConstructor()->getMock();
     $this->helperMock = $this->getMockBuilder('\\Magento\\Braintree\\Helper\\Data')->disableOriginalConstructor()->getMock();
     $this->errorHelperMock = $this->getMockBuilder('\\Magento\\Braintree\\Helper\\Error')->disableOriginalConstructor()->getMock();
     $this->regionFactoryMock = $this->getMockBuilder('\\Magento\\Directory\\Model\\RegionFactory')->disableOriginalConstructor()->getMock();
     $this->loggerMock = $this->getMockBuilder('\\Magento\\Payment\\Model\\Method\\Logger')->disableOriginalConstructor()->getMock();
     $this->braintreeTransactionMock = $this->getMockBuilder('\\Magento\\Braintree\\Model\\Adapter\\BraintreeTransaction')->getMock();
     $this->braintreeCreditCardMock = $this->getMockBuilder('\\Magento\\Braintree\\Model\\Adapter\\BraintreeCreditCard')->getMock();
     $this->appStateMock = $this->getMockBuilder('\\Magento\\Framework\\App\\State')->disableOriginalConstructor()->getMock();
     $this->psrLoggerMock = $this->getMock('\\Psr\\Log\\LoggerInterface');
     $this->contextMock->expects($this->any())->method('getLogger')->willReturn($this->psrLoggerMock);
     $this->contextMock->expects($this->any())->method('getAppState')->willReturn($this->appStateMock);
     $this->orderRepository = $this->getMockBuilder('Magento\\Sales\\Api\\OrderRepositoryInterface')->getMockForAbstractClass();
     $this->objectManagerHelper = new ObjectManagerHelper($this);
     $this->model = $this->objectManagerHelper->getObject('Magento\\Braintree\\Model\\PaymentMethod', ['context' => $this->contextMock, 'config' => $this->configMock, 'vault' => $this->vaultMock, 'registry' => $this->registryMock, 'salesTransactionCollectionFactory' => $this->salesTransactionCollectionFactoryMock, 'productMetaData' => $this->productMetaDataMock, 'braintreeHelper' => $this->helperMock, 'errorHelper' => $this->errorHelperMock, 'regionFactory' => $this->regionFactoryMock, 'logger' => $this->loggerMock, 'braintreeTransaction' => $this->braintreeTransactionMock, 'braintreeCreditCard' => $this->braintreeCreditCardMock, 'orderRepository' => $this->orderRepository]);
     $this->infoInstanceMock = $this->getMockForAbstractClass('\\Magento\\Payment\\Model\\InfoInterface', [], '', false, false, false, ['setCcType', 'setCcOwner', 'setCcLast4', 'setCcNumber', 'setCcCid', 'setCcExpMonth', 'setCcExpYear', 'setCcSsIssue', 'setCcSsStartMonth', 'setCcSsStartYear', 'getOrder', 'getQuote', 'getCcType']);
     $this->productMetaDataMock->expects($this->any())->method('getEdition')->willReturn('Community Edition');
     $this->productMetaDataMock->expects($this->any())->method('getVersion')->willReturn('2.0');
 }
 /**
  * @param string $edition
  * @param array $expected
  * @covers \Magento\Braintree\Gateway\Request\ChannelDataBuilder::build
  * @dataProvider buildDataProvider
  */
 public function testBuild($edition, array $expected)
 {
     $buildSubject = [];
     $this->productMetadataMock->expects(static::once())->method('getEdition')->willReturn($edition);
     $this->assertEquals($expected, $this->builder->build($buildSubject));
 }