riainvoice/vendor_old/omnipay/common/tests/Omnipay/Common/AbstractGatewayTest.php
2021-10-01 23:56:38 +05:30

176 lines
4.7 KiB
PHP

<?php
namespace Omnipay\Common;
use Mockery as m;
use Omnipay\Common\Message\AbstractRequest;
use Omnipay\Tests\TestCase;
use Symfony\Component\HttpFoundation\ParameterBag;
class AbstractGatewayTest extends TestCase
{
public function setUp()
{
$this->gateway = m::mock('\Omnipay\Common\AbstractGateway')->makePartial();
$this->gateway->initialize();
}
public function testConstruct()
{
$this->gateway = new AbstractGatewayTest_MockAbstractGateway;
$this->assertInstanceOf('\Guzzle\Http\Client', $this->gateway->getProtectedHttpClient());
$this->assertInstanceOf('\Symfony\Component\HttpFoundation\Request', $this->gateway->getProtectedHttpRequest());
$this->assertSame(array(), $this->gateway->getParameters());
}
public function testGetShortName()
{
$this->assertSame('\\'.get_class($this->gateway), $this->gateway->getShortName());
}
public function testInitializeDefaults()
{
$defaults = array(
'currency' => 'AUD', // fixed default type
'username' => array('joe', 'fred'), // enum default type
);
$this->gateway->shouldReceive('getDefaultParameters')->once()
->andReturn($defaults);
$this->gateway->initialize();
$expected = array(
'currency' => 'AUD',
'username' => 'joe',
);
$this->assertSame($expected, $this->gateway->getParameters());
}
public function testInitializeParameters()
{
$this->gateway->shouldReceive('getDefaultParameters')->once()
->andReturn(array('currency' => 'AUD'));
$this->gateway->initialize(array(
'currency' => 'USD',
'unknown' => '42',
));
$this->assertSame(array('currency' => 'USD'), $this->gateway->getParameters());
}
public function testGetDefaultParameters()
{
$this->assertSame(array(), $this->gateway->getDefaultParameters());
}
public function testGetParameters()
{
$this->gateway->setTestMode(true);
$this->assertSame(array('testMode' => true), $this->gateway->getParameters());
}
public function testTestMode()
{
$this->assertSame($this->gateway, $this->gateway->setTestMode(true));
$this->assertSame(true, $this->gateway->getTestMode());
}
public function testCurrency()
{
$this->assertSame($this->gateway, $this->gateway->setCurrency('USD'));
$this->assertSame('USD', $this->gateway->getCurrency());
}
public function testSupportsAuthorize()
{
$this->assertFalse($this->gateway->supportsAuthorize());
}
public function testSupportsCompleteAuthorize()
{
$this->assertFalse($this->gateway->supportsCompleteAuthorize());
}
public function testSupportsCapture()
{
$this->assertFalse($this->gateway->supportsCapture());
}
public function testSupportsPurchase()
{
$this->assertFalse($this->gateway->supportsPurchase());
}
public function testSupportsCompletePurchase()
{
$this->assertFalse($this->gateway->supportsCompletePurchase());
}
public function testSupportsRefund()
{
$this->assertFalse($this->gateway->supportsRefund());
}
public function testSupportsVoid()
{
$this->assertFalse($this->gateway->supportsVoid());
}
public function testSupportsCreateCard()
{
$this->assertFalse($this->gateway->supportsCreateCard());
}
public function testSupportsDeleteCard()
{
$this->assertFalse($this->gateway->supportsDeleteCard());
}
public function testSupportsUpdateCard()
{
$this->assertFalse($this->gateway->supportsUpdateCard());
}
public function testCreateRequest()
{
$this->gateway = new AbstractGatewayTest_MockAbstractGateway;
$request = $this->gateway->callCreateRequest(
'\Omnipay\Common\AbstractGatewayTest_MockAbstractRequest',
array('currency' => 'THB')
);
$this->assertSame(array('currency' => 'THB'), $request->getParameters());
}
}
class AbstractGatewayTest_MockAbstractGateway extends AbstractGateway
{
public function getName()
{
return 'Mock Gateway Implementation';
}
public function getProtectedHttpClient()
{
return $this->httpClient;
}
public function getProtectedHttpRequest()
{
return $this->httpRequest;
}
public function callCreateRequest($class, array $parameters)
{
return $this->createRequest($class, $parameters);
}
}
class AbstractGatewayTest_MockAbstractRequest extends AbstractRequest
{
public function getData() {}
public function sendData($data) {}
}