123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Payment\Test\Unit\Gateway\Request;
- use Magento\Payment\Gateway\Request\BuilderComposite;
- use Magento\Payment\Gateway\Request\BuilderInterface;
- class BuilderCompositeTest extends \PHPUnit\Framework\TestCase
- {
- public function testBuildEmpty()
- {
- $tMapFactory = $this->getMockBuilder(\Magento\Framework\ObjectManager\TMapFactory::class)
- ->disableOriginalConstructor()
- ->setMethods(['create'])
- ->getMock();
- $tMap = $this->getMockBuilder(\Magento\Framework\ObjectManager\TMap::class)
- ->disableOriginalConstructor()
- ->getMock();
- $tMapFactory->expects(static::once())
- ->method('create')
- ->with(
- [
- 'array' => [],
- 'type' => BuilderInterface::class
- ]
- )
- ->willReturn($tMap);
- $tMap->expects(static::once())
- ->method('getIterator')
- ->willReturn(new \ArrayIterator([]));
- $builder = new BuilderComposite($tMapFactory, []);
- static::assertEquals([], $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::class)
- ->disableOriginalConstructor()
- ->setMethods(['create'])
- ->getMock();
- $tMap = $this->getMockBuilder(\Magento\Framework\ObjectManager\TMap::class)
- ->disableOriginalConstructor()
- ->getMock();
- $customerBuilder = $this->getMockBuilder(\Magento\Payment\Gateway\Request\BuilderInterface::class)
- ->getMockForAbstractClass();
- $productBuilder = $this->getMockBuilder(\Magento\Payment\Gateway\Request\BuilderInterface::class)
- ->getMockForAbstractClass();
- $magentoBuilder = $this->getMockBuilder(\Magento\Payment\Gateway\Request\BuilderInterface::class)
- ->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::class,
- 'product' => \Magento\Payment\Gateway\Request\BuilderInterface::class,
- 'magento' => \Magento\Payment\Gateway\Request\BuilderInterface::class
- ],
- '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::class,
- 'product' => \Magento\Payment\Gateway\Request\BuilderInterface::class,
- 'magento' => \Magento\Payment\Gateway\Request\BuilderInterface::class
- ]
- );
- static::assertEquals($expected, $builder->build([]));
- }
- /**
- * Get list of variations
- */
- public function buildDataProvider()
- {
- return [
- [[
- 'user' => 'Mrs G. Crump',
- 'address' => '46 Egernon Crescent',
- 'amount' => 10.00,
- 'currency' => 'pound',
- 'item' => 'gas cooker',
- 'quantity' => 1,
- 'options' => ['product' => '', 'magento' => 'magento'],
- 'url' => 'https://url.in',
- ]],
- [[
- 'user' => 'John Doe',
- 'address' => '46 Main Street',
- 'amount' => 250.00,
- 'currency' => 'usd',
- 'item' => 'phone',
- 'quantity' => 2,
- 'options' => ['product' => 'product', 'magento' => 'magento'],
- 'url' => 'https://url.io',
- ]],
- [[
- 'user' => 'John Smit',
- 'address' => '46 Egernon Crescent',
- 'amount' => 1100.00,
- 'currency' => 'usd',
- 'item' => 'notebook',
- 'quantity' => 1,
- 'options' => ['product' => ['discount' => ['price' => 2.00]], 'magento' => 'magento'],
- 'url' => 'http://url.ua',
- ]],
- ];
- }
- }
|