WIP
All Unit Test are green
This commit is contained in:
@@ -43,6 +43,8 @@ use Thelia\Exception\InvalidRuleValueException;
|
||||
*/
|
||||
class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
/** @var CouponAdapterInterface $stubTheliaAdapter */
|
||||
protected $stubTheliaAdapter = null;
|
||||
|
||||
/**
|
||||
* Sets up the fixture, for example, opens a network connection.
|
||||
@@ -51,30 +53,33 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
protected function setUp()
|
||||
{
|
||||
/** @var CouponAdapterInterface $stubTheliaAdapter */
|
||||
$stubTheliaAdapter = $this->generateValidCouponBaseAdapterMock();
|
||||
$this->stubTheliaAdapter = $this->generateValidCouponBaseAdapterMock();
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate valid CouponBaseAdapter
|
||||
*
|
||||
* @param float $cartTotalPrice Total amount of the current Cart
|
||||
*
|
||||
* @return CouponAdapterInterface
|
||||
*/
|
||||
protected function generateValidCouponBaseAdapterMock()
|
||||
protected function generateValidCouponBaseAdapterMock($cartTotalPrice = 421.23)
|
||||
{
|
||||
/** @var CouponAdapterInterface $stubTheliaAdapter */
|
||||
$stubTheliaAdapter = $this->getMock(
|
||||
'CouponBaseAdapter',
|
||||
array('getCartTotalPrice'),
|
||||
array()
|
||||
);
|
||||
$stubTheliaAdapter = $this->getMock(
|
||||
'Thelia\Coupon\CouponBaseAdapter',
|
||||
array('getCartTotalPrice'),
|
||||
array()
|
||||
);
|
||||
$stubTheliaAdapter->expects($this->any())
|
||||
->method('getCartTotalPrice')
|
||||
->will($this->returnValue(421.23));
|
||||
->will($this->returnValue($cartTotalPrice));
|
||||
|
||||
return $stubTheliaAdapter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if validity test on BackOffice inputs are working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForTotalAmount::checkBackOfficeInput
|
||||
*
|
||||
@@ -91,10 +96,7 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
)
|
||||
)
|
||||
);
|
||||
$validated = array(
|
||||
AvailableForTotalAmount::PARAM1_PRICE => $adapter->getCartTotalPrice()
|
||||
);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators, $validated);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators);
|
||||
|
||||
$expected = true;
|
||||
$actual = $rule->checkBackOfficeInput();
|
||||
@@ -102,6 +104,7 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if validity test on BackOffice inputs are working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForTotalAmount::checkBackOfficeInput
|
||||
* @expectedException \Thelia\Exception\InvalidRuleOperatorException
|
||||
@@ -120,10 +123,7 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
)
|
||||
);
|
||||
|
||||
$validated = array(
|
||||
AvailableForTotalAmount::PARAM1_PRICE => $adapter->getCartTotalPrice()
|
||||
);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators, $validated);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators);
|
||||
|
||||
$expected = false;
|
||||
$actual = $rule->checkBackOfficeInput();
|
||||
@@ -131,6 +131,7 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if validity test on BackOffice inputs are working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForTotalAmount::checkBackOfficeInput
|
||||
* @expectedException \ErrorException
|
||||
@@ -138,7 +139,7 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
*/
|
||||
public function testInValidBackOfficeInputValue()
|
||||
{
|
||||
$adapter = new CouponBaseAdapter();
|
||||
$adapter = $this->generateValidCouponBaseAdapterMock();
|
||||
|
||||
$validators = array(
|
||||
AvailableForTotalAmount::PARAM1_PRICE => new RuleValidator(
|
||||
@@ -147,10 +148,7 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
)
|
||||
);
|
||||
|
||||
$validated = array(
|
||||
AvailableForTotalAmount::PARAM1_PRICE => $adapter->getCartTotalPrice()
|
||||
);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators, $validated);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators);
|
||||
|
||||
$expected = false;
|
||||
$actual = $rule->checkBackOfficeInput();
|
||||
@@ -160,13 +158,14 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
|
||||
|
||||
/**
|
||||
* Check if validity test on FrontOffice inputs are working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForTotalAmount::checkCheckoutInput
|
||||
*
|
||||
*/
|
||||
public function testValidCheckoutInput()
|
||||
{
|
||||
$adapter = new CouponBaseAdapter();
|
||||
$adapter = $this->stubTheliaAdapter;
|
||||
|
||||
$validators = array(
|
||||
AvailableForTotalAmount::PARAM1_PRICE => new RuleValidator(
|
||||
@@ -177,10 +176,7 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
)
|
||||
);
|
||||
|
||||
$validated = array(
|
||||
AvailableForTotalAmount::PARAM1_PRICE => $adapter->getCartTotalPrice()
|
||||
);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators, $validated);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators);
|
||||
|
||||
$expected = true;
|
||||
$actual = $rule->checkCheckoutInput();
|
||||
@@ -188,6 +184,7 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if validity test on FrontOffice inputs are working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForTotalAmount::checkCheckoutInput
|
||||
* @expectedException \Thelia\Exception\InvalidRuleValueException
|
||||
@@ -195,7 +192,7 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
*/
|
||||
public function testInValidCheckoutInputValue()
|
||||
{
|
||||
$adapter = new CouponBaseAdapter();
|
||||
$adapter = $this->generateValidCouponBaseAdapterMock(421);
|
||||
|
||||
$validators = array(
|
||||
AvailableForTotalAmount::PARAM1_PRICE => new RuleValidator(
|
||||
@@ -206,10 +203,7 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
)
|
||||
);
|
||||
|
||||
$validated = array(
|
||||
AvailableForTotalAmount::PARAM1_PRICE => 421
|
||||
);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators, $validated);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators);
|
||||
|
||||
$expected = false;
|
||||
$actual = $rule->checkCheckoutInput();
|
||||
@@ -217,6 +211,7 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if validity test on FrontOffice inputs are working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForTotalAmount::checkCheckoutInput
|
||||
* @expectedException \Thelia\Exception\InvalidRuleValueException
|
||||
@@ -224,7 +219,7 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
*/
|
||||
public function testInValidCheckoutInputType()
|
||||
{
|
||||
$adapter = new CouponBaseAdapter();
|
||||
$adapter = $this->generateValidCouponBaseAdapterMock(421);
|
||||
|
||||
$validators = array(
|
||||
AvailableForTotalAmount::PARAM1_PRICE => new RuleValidator(
|
||||
@@ -235,10 +230,7 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
)
|
||||
);
|
||||
|
||||
$validated = array(
|
||||
AvailableForTotalAmount::PARAM1_PRICE => 421
|
||||
);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators, $validated);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators);
|
||||
|
||||
$expected = false;
|
||||
$actual = $rule->checkCheckoutInput();
|
||||
@@ -246,13 +238,14 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if test inferior operator is working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForTotalAmount::isMatching
|
||||
*
|
||||
*/
|
||||
public function testMatchingRuleInferior()
|
||||
{
|
||||
$adapter = new CouponBaseAdapter();
|
||||
$adapter = $this->generateValidCouponBaseAdapterMock(421.22);
|
||||
|
||||
$validators = array(
|
||||
AvailableForTotalAmount::PARAM1_PRICE => new RuleValidator(
|
||||
@@ -263,10 +256,7 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
)
|
||||
);
|
||||
|
||||
$validated = array(
|
||||
AvailableForTotalAmount::PARAM1_PRICE => 421.22
|
||||
);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators, $validated);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators);
|
||||
|
||||
$expected = true;
|
||||
$actual = $rule->isMatching();
|
||||
@@ -274,13 +264,14 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if test inferior operator is working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForTotalAmount::isMatching
|
||||
*
|
||||
*/
|
||||
public function testNotMatchingRuleInferior()
|
||||
{
|
||||
$adapter = new CouponBaseAdapter();
|
||||
$adapter = $this->generateValidCouponBaseAdapterMock(421.23);
|
||||
|
||||
$validators = array(
|
||||
AvailableForTotalAmount::PARAM1_PRICE => new RuleValidator(
|
||||
@@ -291,10 +282,7 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
)
|
||||
);
|
||||
|
||||
$validated = array(
|
||||
AvailableForTotalAmount::PARAM1_PRICE => 421.23
|
||||
);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators, $validated);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators);
|
||||
|
||||
$expected = false;
|
||||
$actual = $rule->isMatching();
|
||||
@@ -302,13 +290,14 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if test equals operator is working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForTotalAmount::isMatching
|
||||
*
|
||||
*/
|
||||
public function testMatchingRuleEqual()
|
||||
{
|
||||
$adapter = new CouponBaseAdapter();
|
||||
$adapter = $this->stubTheliaAdapter;
|
||||
|
||||
$validators = array(
|
||||
AvailableForTotalAmount::PARAM1_PRICE => new RuleValidator(
|
||||
@@ -319,10 +308,7 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
)
|
||||
);
|
||||
|
||||
$validated = array(
|
||||
AvailableForTotalAmount::PARAM1_PRICE => $adapter->getCartTotalPrice()
|
||||
);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators, $validated);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators);
|
||||
|
||||
$expected = true;
|
||||
$actual = $rule->isMatching();
|
||||
@@ -330,13 +316,14 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if test equals operator is working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForTotalAmount::isMatching
|
||||
*
|
||||
*/
|
||||
public function testNotMatchingRuleEqual()
|
||||
{
|
||||
$adapter = new CouponBaseAdapter();
|
||||
$adapter = $this->generateValidCouponBaseAdapterMock(421.22);
|
||||
|
||||
$validators = array(
|
||||
AvailableForTotalAmount::PARAM1_PRICE => new RuleValidator(
|
||||
@@ -347,10 +334,7 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
)
|
||||
);
|
||||
|
||||
$validated = array(
|
||||
AvailableForTotalAmount::PARAM1_PRICE => 421.22
|
||||
);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators, $validated);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators);
|
||||
|
||||
$expected = false;
|
||||
$actual = $rule->isMatching();
|
||||
@@ -358,13 +342,14 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if test superior operator is working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForTotalAmount::isMatching
|
||||
*
|
||||
*/
|
||||
public function testMatchingRuleSuperior()
|
||||
{
|
||||
$adapter = new CouponBaseAdapter();
|
||||
$adapter = $this->generateValidCouponBaseAdapterMock(421.24);
|
||||
|
||||
$validators = array(
|
||||
AvailableForTotalAmount::PARAM1_PRICE => new RuleValidator(
|
||||
@@ -375,10 +360,7 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
)
|
||||
);
|
||||
|
||||
$validated = array(
|
||||
AvailableForTotalAmount::PARAM1_PRICE => 421.24
|
||||
);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators, $validated);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators);
|
||||
|
||||
$expected = true;
|
||||
$actual = $rule->isMatching();
|
||||
@@ -386,13 +368,14 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if test superior operator is working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForTotalAmount::isMatching
|
||||
*
|
||||
*/
|
||||
public function testNotMatchingRuleSuperior()
|
||||
{
|
||||
$adapter = new CouponBaseAdapter();
|
||||
$adapter = $this->generateValidCouponBaseAdapterMock(421.23);
|
||||
|
||||
$validators = array(
|
||||
AvailableForTotalAmount::PARAM1_PRICE => new RuleValidator(
|
||||
@@ -403,10 +386,7 @@ class AvailableForTotalAmountTest extends \PHPUnit_Framework_TestCase
|
||||
)
|
||||
);
|
||||
|
||||
$validated = array(
|
||||
AvailableForTotalAmount::PARAM1_PRICE => 421.23
|
||||
);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators, $validated);
|
||||
$rule = new AvailableForTotalAmount($adapter, $validators);
|
||||
|
||||
$expected = false;
|
||||
$actual = $rule->isMatching();
|
||||
|
||||
@@ -24,6 +24,10 @@
|
||||
namespace Thelia\Coupon;
|
||||
|
||||
use Thelia\Constraint\Rule\AvailableForXArticles;
|
||||
use Thelia\Constraint\Rule\Operators;
|
||||
use Thelia\Constraint\Validator\QuantityParam;
|
||||
use Thelia\Constraint\Validator\RuleValidator;
|
||||
use Thelia\Exception\InvalidRuleOperatorException;
|
||||
|
||||
/**
|
||||
* Created by JetBrains PhpStorm.
|
||||
@@ -39,6 +43,9 @@ use Thelia\Constraint\Rule\AvailableForXArticles;
|
||||
class AvailableForXArticlesTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/** @var CouponAdapterInterface $stubTheliaAdapter */
|
||||
protected $stubTheliaAdapter = null;
|
||||
|
||||
/**
|
||||
* Sets up the fixture, for example, opens a network connection.
|
||||
* This method is called before a test is executed.
|
||||
@@ -46,41 +53,51 @@ class AvailableForXArticlesTest extends \PHPUnit_Framework_TestCase
|
||||
protected function setUp()
|
||||
{
|
||||
/** @var CouponAdapterInterface $stubTheliaAdapter */
|
||||
$stubTheliaAdapter = $this->generateValidCouponBaseAdapterMock();
|
||||
$this->stubTheliaAdapter = $this->generateValidCouponBaseAdapterMock();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return an Adapter Mock wick 4 products int the Cart
|
||||
* Generate valid CouponBaseAdapter
|
||||
*
|
||||
* @param int $nbArticlesInCart Total articles in the current Cart
|
||||
*
|
||||
* @return CouponAdapterInterface
|
||||
*/
|
||||
protected function generateValidCouponBaseAdapterMock()
|
||||
protected function generateValidCouponBaseAdapterMock($nbArticlesInCart = 4)
|
||||
{
|
||||
/** @var CouponAdapterInterface $stubTheliaAdapter */
|
||||
$stubTheliaAdapter = $this->getMock(
|
||||
'CouponBaseAdapter',
|
||||
'Thelia\Coupon\CouponBaseAdapter',
|
||||
array('getNbArticlesInCart'),
|
||||
array()
|
||||
);
|
||||
$stubTheliaAdapter->expects($this->any())
|
||||
->method('getNbArticlesInCart')
|
||||
->will($this->returnValue(4));
|
||||
->will($this->returnValue($nbArticlesInCart));
|
||||
|
||||
return $stubTheliaAdapter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if validity test on BackOffice inputs are working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForXArticles::checkBackOfficeInput
|
||||
*
|
||||
*/
|
||||
public function testValidBackOfficeInput()
|
||||
{
|
||||
$adapter = new CouponBaseAdapter();
|
||||
$adapter = $this->stubTheliaAdapter;
|
||||
|
||||
$validators = array(4);
|
||||
$validated = array($adapter->getNbArticlesInCart());
|
||||
$rule = new AvailableForXArticles($adapter, $validators, $validated);
|
||||
$validators = array(
|
||||
AvailableForXArticles::PARAM1_QUANTITY => new RuleValidator(
|
||||
Operators::SUPERIOR,
|
||||
new QuantityParam(
|
||||
$adapter,
|
||||
4
|
||||
)
|
||||
)
|
||||
);
|
||||
$rule = new AvailableForXArticles($adapter, $validators);
|
||||
|
||||
$expected = true;
|
||||
$actual = $rule->checkBackOfficeInput();
|
||||
@@ -88,33 +105,77 @@ class AvailableForXArticlesTest extends \PHPUnit_Framework_TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if validity test on BackOffice inputs are working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForXArticles::checkBackOfficeInput
|
||||
*
|
||||
* @expectedException \Thelia\Exception\InvalidRuleValueException
|
||||
*/
|
||||
public function testInValidBackOfficeInput()
|
||||
public function testInValidBackOfficeInputFloat()
|
||||
{
|
||||
$adapter = new CouponBaseAdapter();
|
||||
$adapter = $this->stubTheliaAdapter;
|
||||
|
||||
$validators = array(4.5);
|
||||
$validated = array($adapter->getNbArticlesInCart());
|
||||
$rule = new AvailableForXArticles($adapter, $validators, $validated);
|
||||
$validators = array(
|
||||
AvailableForXArticles::PARAM1_QUANTITY => new RuleValidator(
|
||||
Operators::SUPERIOR,
|
||||
new QuantityParam(
|
||||
$adapter,
|
||||
4.5
|
||||
)
|
||||
)
|
||||
);
|
||||
$rule = new AvailableForXArticles($adapter, $validators);
|
||||
|
||||
$expected = false;
|
||||
$actual = $rule->checkBackOfficeInput();
|
||||
$this->assertEquals($expected, $actual);
|
||||
}
|
||||
|
||||
$validators = array(-1);
|
||||
$validated = array($adapter->getNbArticlesInCart());
|
||||
$rule = new AvailableForXArticles($adapter, $validators, $validated);
|
||||
/**
|
||||
* Check if validity test on BackOffice inputs are working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForXArticles::checkBackOfficeInput
|
||||
* @expectedException \Thelia\Exception\InvalidRuleValueException
|
||||
*/
|
||||
public function testInValidBackOfficeInputNegative()
|
||||
{
|
||||
$adapter = $this->stubTheliaAdapter;
|
||||
|
||||
$validators = array(
|
||||
AvailableForXArticles::PARAM1_QUANTITY => new RuleValidator(
|
||||
Operators::SUPERIOR,
|
||||
new QuantityParam(
|
||||
$adapter,
|
||||
-1
|
||||
)
|
||||
)
|
||||
);
|
||||
$rule = new AvailableForXArticles($adapter, $validators);
|
||||
|
||||
$expected = false;
|
||||
$actual = $rule->checkBackOfficeInput();
|
||||
$this->assertEquals($expected, $actual);
|
||||
}
|
||||
|
||||
$validators = array('bad');
|
||||
$validated = array($adapter->getNbArticlesInCart());
|
||||
$rule = new AvailableForXArticles($adapter, $validators, $validated);
|
||||
/**
|
||||
* Check if validity test on BackOffice inputs are working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForXArticles::checkBackOfficeInput
|
||||
* @expectedException \Thelia\Exception\InvalidRuleValueException
|
||||
*/
|
||||
public function testInValidBackOfficeInputString()
|
||||
{
|
||||
$adapter = $this->stubTheliaAdapter;
|
||||
|
||||
$validators = array(
|
||||
AvailableForXArticles::PARAM1_QUANTITY => new RuleValidator(
|
||||
Operators::SUPERIOR,
|
||||
new QuantityParam(
|
||||
$adapter,
|
||||
'bad'
|
||||
)
|
||||
)
|
||||
);
|
||||
$rule = new AvailableForXArticles($adapter, $validators);
|
||||
|
||||
$expected = false;
|
||||
$actual = $rule->checkBackOfficeInput();
|
||||
@@ -123,17 +184,26 @@ class AvailableForXArticlesTest extends \PHPUnit_Framework_TestCase
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Check if validity test on FrontOffice inputs are working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForXArticles::checkCheckoutInput
|
||||
*
|
||||
*/
|
||||
public function testValidCheckoutInput()
|
||||
{
|
||||
$adapter = new CouponBaseAdapter();
|
||||
$validators = array(4);
|
||||
$validated = array($adapter->getNbArticlesInCart());
|
||||
$rule = new AvailableForXArticles($adapter, $validators, $validated);
|
||||
$adapter = $this->stubTheliaAdapter;
|
||||
$validators = array(
|
||||
AvailableForXArticles::PARAM1_QUANTITY => new RuleValidator(
|
||||
Operators::SUPERIOR,
|
||||
new QuantityParam(
|
||||
$adapter,
|
||||
4
|
||||
)
|
||||
)
|
||||
);
|
||||
$rule = new AvailableForXArticles($adapter, $validators);
|
||||
|
||||
$expected = true;
|
||||
$actual = $rule->checkCheckoutInput();
|
||||
@@ -141,32 +211,24 @@ class AvailableForXArticlesTest extends \PHPUnit_Framework_TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if validity test on FrontOffice inputs are working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForXArticles::checkCheckoutInput
|
||||
*
|
||||
* @expectedException \Thelia\Exception\InvalidRuleValueException
|
||||
*/
|
||||
public function testInValidCheckoutInput()
|
||||
public function testInValidCheckoutInputFloat()
|
||||
{
|
||||
$adapter = new CouponBaseAdapter();
|
||||
$validators = array(4.5);
|
||||
$validated = array($adapter->getNbArticlesInCart());
|
||||
$rule = new AvailableForXArticles($adapter, $validators, $validated);
|
||||
|
||||
$expected = false;
|
||||
$actual = $rule->checkCheckoutInput();
|
||||
$this->assertEquals($expected, $actual);
|
||||
|
||||
$validators = array(-1);
|
||||
$validated = array($adapter->getNbArticlesInCart());
|
||||
$rule = new AvailableForXArticles($adapter, $validators, $validated);
|
||||
|
||||
$expected = false;
|
||||
$actual = $rule->checkCheckoutInput();
|
||||
$this->assertEquals($expected, $actual);
|
||||
|
||||
$validators = array('bad');
|
||||
$validated = array($adapter->getNbArticlesInCart());
|
||||
$rule = new AvailableForXArticles($adapter, $validators, $validated);
|
||||
$adapter = $this->generateValidCouponBaseAdapterMock(4.5);
|
||||
$validators = array(
|
||||
AvailableForXArticles::PARAM1_QUANTITY => new RuleValidator(
|
||||
Operators::SUPERIOR,
|
||||
new QuantityParam(
|
||||
$adapter,
|
||||
4
|
||||
)
|
||||
)
|
||||
);
|
||||
$rule = new AvailableForXArticles($adapter, $validators);
|
||||
|
||||
$expected = false;
|
||||
$actual = $rule->checkCheckoutInput();
|
||||
@@ -174,16 +236,101 @@ class AvailableForXArticlesTest extends \PHPUnit_Framework_TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if validity test on FrontOffice inputs are working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForXArticles::checkCheckoutInput
|
||||
* @expectedException \Thelia\Exception\InvalidRuleValueException
|
||||
*/
|
||||
public function testInValidCheckoutInputNegative()
|
||||
{
|
||||
$adapter = $this->generateValidCouponBaseAdapterMock(-1);
|
||||
|
||||
$validators = array(
|
||||
AvailableForXArticles::PARAM1_QUANTITY => new RuleValidator(
|
||||
Operators::SUPERIOR,
|
||||
new QuantityParam(
|
||||
$adapter,
|
||||
4
|
||||
)
|
||||
)
|
||||
);
|
||||
$rule = new AvailableForXArticles($adapter, $validators);
|
||||
|
||||
$expected = false;
|
||||
$actual = $rule->checkCheckoutInput();
|
||||
$this->assertEquals($expected, $actual);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if validity test on FrontOffice inputs are working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForXArticles::checkCheckoutInput
|
||||
* @expectedException \Thelia\Exception\InvalidRuleValueException
|
||||
*/
|
||||
public function testInValidCheckoutInputString()
|
||||
{
|
||||
$adapter = $this->generateValidCouponBaseAdapterMock('bad');
|
||||
|
||||
$validators = array(
|
||||
AvailableForXArticles::PARAM1_QUANTITY => new RuleValidator(
|
||||
Operators::SUPERIOR,
|
||||
new QuantityParam(
|
||||
$adapter,
|
||||
4
|
||||
)
|
||||
)
|
||||
);
|
||||
$rule = new AvailableForXArticles($adapter, $validators);
|
||||
|
||||
$expected = false;
|
||||
$actual = $rule->checkCheckoutInput();
|
||||
$this->assertEquals($expected, $actual);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if test inferior operator is working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForXArticles::isMatching
|
||||
*
|
||||
*/
|
||||
public function testMatchingRuleInferior()
|
||||
{
|
||||
$adapter = $this->stubTheliaAdapter;
|
||||
$validators = array(
|
||||
AvailableForXArticles::PARAM1_QUANTITY => new RuleValidator(
|
||||
Operators::INFERIOR,
|
||||
new QuantityParam(
|
||||
$adapter,
|
||||
5
|
||||
)
|
||||
)
|
||||
);
|
||||
$rule = new AvailableForXArticles($adapter, $validators);
|
||||
|
||||
$expected = true;
|
||||
$actual = $rule->isMatching();
|
||||
$this->assertEquals($expected, $actual);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if test equals operator is working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForXArticles::isMatching
|
||||
*
|
||||
*/
|
||||
public function testMatchingRuleEqual()
|
||||
{
|
||||
$adapter = new CouponBaseAdapter();
|
||||
$validators = array(4);
|
||||
$validated = array($adapter->getNbArticlesInCart());
|
||||
$rule = new AvailableForXArticles($adapter, $validators, $validated);
|
||||
$adapter = $this->stubTheliaAdapter;
|
||||
$validators = array(
|
||||
AvailableForXArticles::PARAM1_QUANTITY => new RuleValidator(
|
||||
Operators::EQUAL,
|
||||
new QuantityParam(
|
||||
$adapter,
|
||||
4
|
||||
)
|
||||
)
|
||||
);
|
||||
$rule = new AvailableForXArticles($adapter, $validators);
|
||||
|
||||
$expected = true;
|
||||
$actual = $rule->isMatching();
|
||||
@@ -191,16 +338,24 @@ class AvailableForXArticlesTest extends \PHPUnit_Framework_TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if test superior operator is working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForXArticles::isMatching
|
||||
*
|
||||
*/
|
||||
public function testMatchingRuleSuperior()
|
||||
{
|
||||
$adapter = new CouponBaseAdapter();
|
||||
$validators = array(5);
|
||||
$validated = array($adapter->getNbArticlesInCart());
|
||||
$rule = new AvailableForXArticles($adapter, $validators, $validated);
|
||||
$adapter = $this->stubTheliaAdapter;
|
||||
$validators = array(
|
||||
AvailableForXArticles::PARAM1_QUANTITY => new RuleValidator(
|
||||
Operators::SUPERIOR,
|
||||
new QuantityParam(
|
||||
$adapter,
|
||||
3
|
||||
)
|
||||
)
|
||||
);
|
||||
$rule = new AvailableForXArticles($adapter, $validators);
|
||||
|
||||
$expected = true;
|
||||
$actual = $rule->isMatching();
|
||||
@@ -208,16 +363,25 @@ class AvailableForXArticlesTest extends \PHPUnit_Framework_TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if test unavailable operator is working
|
||||
*
|
||||
* @covers Thelia\Coupon\Rule\AvailableForXArticles::isMatching
|
||||
* @expectedException \Thelia\Exception\InvalidRuleOperatorException
|
||||
*
|
||||
*/
|
||||
public function testNotMatchingRule()
|
||||
{
|
||||
$adapter = new CouponBaseAdapter();
|
||||
$validators = array(3);
|
||||
$validated = array($adapter->getNbArticlesInCart());
|
||||
$rule = new AvailableForXArticles($adapter, $validators, $validated);
|
||||
$adapter = $this->stubTheliaAdapter;
|
||||
$validators = array(
|
||||
AvailableForXArticles::PARAM1_QUANTITY => new RuleValidator(
|
||||
Operators::DIFFERENT,
|
||||
new QuantityParam(
|
||||
$adapter,
|
||||
3
|
||||
)
|
||||
)
|
||||
);
|
||||
$rule = new AvailableForXArticles($adapter, $validators);
|
||||
|
||||
$expected = false;
|
||||
$actual = $rule->isMatching();
|
||||
|
||||
Reference in New Issue
Block a user