Sanitize Input for Price Variables

- Updated the model to automatically format the price
- Updated the samples to reflect the new changes
- More Unit Tests
This commit is contained in:
japatel
2014-11-03 16:02:23 -06:00
parent 3c02790138
commit d11533110b
19 changed files with 290 additions and 46 deletions

View File

@@ -0,0 +1,91 @@
<?php
namespace PayPal\Test\Common;
use PayPal\Api\Amount;
use PayPal\Api\Currency;
use PayPal\Api\Details;
use PayPal\Api\Item;
use PayPal\Common\FormatConverter;
use PayPal\Common\PPModel;
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 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 apiModelSettersProvider
*
* @param PPModel $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]);
}
}