public function testBuild()
 {
     $expectedRequest = ['user' => 'Mrs G. Crump', 'url' => 'https://url.in', 'amount' => 10.0, 'currecy' => 'pound', 'address' => '46 Egernon Crescent', 'item' => 'gas cooker', 'quantity' => 1];
     $customerBuilder = $this->getMockBuilder('Magento\\Payment\\Gateway\\Request\\BuilderInterface')->getMockForAbstractClass();
     $productBuilder = $this->getMockBuilder('Magento\\Payment\\Gateway\\Request\\BuilderInterface')->getMockForAbstractClass();
     $magentoBuilder = $this->getMockBuilder('Magento\\Payment\\Gateway\\Request\\BuilderInterface')->getMockForAbstractClass();
     $customerBuilder->expects(static::once())->method('build')->willReturn(['user' => 'Mrs G. Crump', 'address' => '46 Egernon Crescent']);
     $productBuilder->expects(static::once())->method('build')->willReturn(['amount' => 10.0, 'currecy' => 'pound', 'item' => 'gas cooker', 'quantity' => 1]);
     $magentoBuilder->expects(static::once())->method('build')->willReturn(['url' => 'https://url.in']);
     $tMap = $this->getMockBuilder('Magento\\Framework\\ObjectManager\\TMap')->disableOriginalConstructor()->getMock();
     $tMap->expects(static::once())->method('getIterator')->willReturn(new \ArrayIterator([$customerBuilder, $productBuilder, $magentoBuilder]));
     $builder = new BuilderComposite($tMap);
     static::assertEquals($expectedRequest, $builder->build([]));
 }
 /**
  * @param array $expected
  * @covers \Magento\Payment\Gateway\Request\BuilderComposite::build
  * @dataProvider buildDataProvider
  */
 public function testBuild(array $expected)
 {
     $tMapFactory = $this->getMockBuilder('Magento\\Framework\\ObjectManager\\TMapFactory')->disableOriginalConstructor()->setMethods(['create'])->getMock();
     $tMap = $this->getMockBuilder('Magento\\Framework\\ObjectManager\\TMap')->disableOriginalConstructor()->getMock();
     $customerBuilder = $this->getMockBuilder('Magento\\Payment\\Gateway\\Request\\BuilderInterface')->getMockForAbstractClass();
     $productBuilder = $this->getMockBuilder('Magento\\Payment\\Gateway\\Request\\BuilderInterface')->getMockForAbstractClass();
     $magentoBuilder = $this->getMockBuilder('Magento\\Payment\\Gateway\\Request\\BuilderInterface')->getMockForAbstractClass();
     $customerBuilder->expects(static::once())->method('build')->willReturn(['user' => $expected['user'], 'address' => $expected['address']]);
     $productBuilder->expects(static::once())->method('build')->willReturn(['amount' => $expected['amount'], 'currency' => $expected['currency'], 'item' => $expected['item'], 'quantity' => $expected['quantity'], 'options' => ['product' => $expected['options']['product']]]);
     $magentoBuilder->expects(static::once())->method('build')->willReturn(['url' => $expected['url'], 'options' => ['magento' => $expected['options']['magento']]]);
     $tMapFactory->expects(static::once())->method('create')->with(['array' => ['customer' => 'Magento\\Payment\\Gateway\\Request\\BuilderInterface', 'product' => 'Magento\\Payment\\Gateway\\Request\\BuilderInterface', 'magento' => 'Magento\\Payment\\Gateway\\Request\\BuilderInterface'], 'type' => BuilderInterface::class])->willReturn($tMap);
     $tMap->expects(static::once())->method('getIterator')->willReturn(new \ArrayIterator([$customerBuilder, $productBuilder, $magentoBuilder]));
     $builder = new BuilderComposite($tMapFactory, ['customer' => 'Magento\\Payment\\Gateway\\Request\\BuilderInterface', 'product' => 'Magento\\Payment\\Gateway\\Request\\BuilderInterface', 'magento' => 'Magento\\Payment\\Gateway\\Request\\BuilderInterface']);
     static::assertEquals($expected, $builder->build([]));
 }