This repository has been archived on 2026-04-06. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
PayPal-PHP-SDK/tests/PayPal/Test/Common/FormatConverterTest.php
japatel 9c0827643b Renaming Namespaces and Organizing Classes
- Updated OpenId classes to be in API namespace
- Updated PP Naming Convention to PayPal Naming Convention
- FormatConverter Class got its own namespace
- Handlers are grouped in Handler namespace
- Samples and Tests Updated Accordingly
2014-12-18 14:16:41 -06:00

145 lines
4.2 KiB
PHP

<?php
namespace PayPal\Test\Common;
use PayPal\Api\Amount;
use PayPal\Api\Currency;
use PayPal\Api\Details;
use PayPal\Api\Item;
use PayPal\Converter\FormatConverter;
use PayPal\Common\PayPalModel;
use PayPal\Test\Validation\NumericValidatorTest;
class FormatConverterTest extends \PHPUnit_Framework_TestCase
{
public static function classMethodListProvider()
{
return array(
array(new Item(), 'Price'),
array(new Item(), 'Tax'),
array(new Amount(), 'Total'),
array(new Currency(), 'Value'),
array(new Details(), 'Shipping'),
array(new Details(), 'SubTotal'),
array(new Details(), 'Tax'),
array(new Details(), 'Fee'),
array(new Details(), 'ShippingDiscount'),
array(new Details(), 'Insurance'),
array(new Details(), 'HandlingFee'),
array(new Details(), 'GiftWrap'),
);
}
public static function CurrencyListWithNoDecimalsProvider()
{
return array(
array('JPY'),
array('TWD')
);
}
public static function apiModelSettersProvider()
{
$provider = array();
foreach (NumericValidatorTest::positiveProvider() as $value) {
foreach (self::classMethodListProvider() as $method) {
$provider[] = array_merge($method, array($value));
}
}
return $provider;
}
public static function apiModelSettersInvalidProvider()
{
$provider = array();
foreach (NumericValidatorTest::invalidProvider() as $value) {
foreach (self::classMethodListProvider() as $method) {
$provider[] = array_merge($method, array($value));
}
}
return $provider;
}
/**
*
* @dataProvider \PayPal\Test\Validation\NumericValidatorTest::positiveProvider
*/
public function testFormatToTwoDecimalPlaces($input, $expected)
{
$result = FormatConverter::formatToTwoDecimalPlaces($input);
$this->assertEquals($expected, $result);
}
/**
* @dataProvider CurrencyListWithNoDecimalsProvider
*/
public function testPriceWithNoDecimalCurrencyInvalid($input)
{
try {
FormatConverter::formatToPrice("1.234", $input);
} catch (\InvalidArgumentException $ex) {
$this->assertContains("value cannot have decimals for", $ex->getMessage());
}
}
/**
* @dataProvider CurrencyListWithNoDecimalsProvider
*/
public function testPriceWithNoDecimalCurrencyValid($input)
{
$result = FormatConverter::formatToPrice("1.0000000", $input);
$this->assertEquals("1", $result);
}
/**
*
* @dataProvider \PayPal\Test\Validation\NumericValidatorTest::positiveProvider
*/
public function testFormatToNumber($input, $expected)
{
$result = FormatConverter::formatToNumber($input);
$this->assertEquals($expected, $result);
}
public function testFormatToNumberDecimals()
{
$result = FormatConverter::formatToNumber("0.0", 4);
$this->assertEquals("0.0000", $result);
}
public function testFormat()
{
$result = FormatConverter::format("12.0123", "%0.2f");
$this->assertEquals("12.01", $result);
}
/**
* @dataProvider apiModelSettersProvider
*
* @param PayPalModel $class Class Object
* @param string $method Method Name where the format is being applied
* @param array $values array of ['input', 'expectedResponse'] is provided
*/
public function testSettersOfKnownApiModel($class, $method, $values)
{
$obj = new $class();
$setter = "set" . $method;
$getter = "get" . $method;
$result = $obj->$setter($values[0]);
$this->assertEquals($values[1], $result->$getter());
}
/**
* @dataProvider apiModelSettersInvalidProvider
* @expectedException \InvalidArgumentException
*/
public function testSettersOfKnownApiModelInvalid($class, $methodName, $values)
{
$obj = new $class();
$setter = "set" . $methodName;
$obj->$setter($values[0]);
}
}