From 219ffdec9912ed5ee832776a92045a34da061e7a Mon Sep 17 00:00:00 2001 From: gmorel Date: Sun, 17 Nov 2013 17:30:34 +0100 Subject: [PATCH] Adding/Refactoring unit test for MatchForEveryoneManager|MatchForTotalAmountManager|MatchForXArticlesManager --- .../MatchForEveryoneManagerTest.php | 1 + .../MatchForTotalAmountManagerTest.php | 162 ++++++++++++++++++ .../MatchForXArticlesManagerTest.php | 136 +++++++++++++++ 3 files changed, 299 insertions(+) diff --git a/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php b/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php index f0460139a..38da60859 100644 --- a/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php +++ b/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php @@ -49,6 +49,7 @@ class MatchForEveryoneManagerTest extends \PHPUnit_Framework_TestCase * * @param int $cartTotalPrice Cart total price * @param string $checkoutCurrency Checkout currency + * @param string $i18nOutput Output from each translation * * @return \PHPUnit_Framework_MockObject_MockObject */ diff --git a/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php b/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php index 6eb59d0fc..d95de9d4d 100644 --- a/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php +++ b/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php @@ -803,6 +803,168 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase $unserialized = $conditionFactory->unserializeConditionCollection($serialized); } + /** + * Generate adapter stub + * + * @param int $cartTotalPrice Cart total price + * @param string $checkoutCurrency Checkout currency + * @param string $i18nOutput Output from each translation + * + * @return \PHPUnit_Framework_MockObject_MockObject + */ + public function generateFacadeStub($cartTotalPrice = 400, $checkoutCurrency = 'EUR', $i18nOutput = '') + { + $stubFacade = $this->getMockBuilder('\Thelia\Coupon\BaseFacade') + ->disableOriginalConstructor() + ->getMock(); + + $stubFacade->expects($this->any()) + ->method('getCartTotalPrice') + ->will($this->returnValue($cartTotalPrice)); + + $stubFacade->expects($this->any()) + ->method('getCheckoutCurrency') + ->will($this->returnValue($checkoutCurrency)); + + $stubFacade->expects($this->any()) + ->method('getConditionEvaluator') + ->will($this->returnValue(new ConditionEvaluator())); + + $stubTranslator = $this->getMockBuilder('\Thelia\Core\Translation\Translator') + ->disableOriginalConstructor() + ->getMock(); + $stubTranslator->expects($this->any()) + ->method('trans') + ->will($this->returnValue($i18nOutput)); + + $stubFacade->expects($this->any()) + ->method('getTranslator') + ->will($this->returnValue($stubTranslator)); + + $currency1 = new Currency(); + $currency1->setCode('EUR'); + $currency2 = new Currency(); + $currency2->setCode('USD'); + $stubFacade->expects($this->any()) + ->method('getAvailableCurrencies') + ->will($this->returnValue(array($currency1, $currency2))); + + return $stubFacade; + } + + /** + * Check getName i18n + * + * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::getName + * + */ + public function testGetName() + { + $stubFacade = $this->generateFacadeStub(399, 'EUR', 'Cart total amount'); + + /** @var FacadeInterface $stubFacade */ + $condition1 = new MatchForTotalAmountManager($stubFacade); + + $actual = $condition1->getName(); + $expected = 'Cart total amount'; + $this->assertEquals($expected, $actual); + } + + /** + * Check tooltip i18n + * + * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::getToolTip + * + */ + public function testGetToolTip() + { + $stubFacade = $this->generateFacadeStub(399, 'EUR', 'If cart total amount is %operator% %amount% %currency%'); + + /** @var FacadeInterface $stubFacade */ + $condition1 = new MatchForTotalAmountManager($stubFacade); + $operators = array( + MatchForTotalAmountManager::INPUT1 => Operators::EQUAL, + MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmountManager::INPUT1 => 400.00, + MatchForTotalAmountManager::INPUT2 => 'EUR'); + $condition1->setValidatorsFromForm($operators, $values); + + $actual = $condition1->getToolTip(); + $expected = 'If cart total amount is %operator% %amount% %currency%'; + $this->assertEquals($expected, $actual); + } + + /** + * Check validator + * + * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::generateInputs + * + */ + public function testGetValidator() + { + $stubFacade = $this->generateFacadeStub(399, 'EUR', 'Price'); + + /** @var FacadeInterface $stubFacade */ + $condition1 = new MatchForTotalAmountManager($stubFacade); + $operators = array( + MatchForTotalAmountManager::INPUT1 => Operators::EQUAL, + MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmountManager::INPUT1 => 400.00, + MatchForTotalAmountManager::INPUT2 => 'EUR'); + $condition1->setValidatorsFromForm($operators, $values); + + $actual = $condition1->getValidators(); + + $validators = array( + 'inputs' => array( + MatchForTotalAmountManager::INPUT1 => array( + 'title' => 'Price', + 'availableOperators' => array( + '<' => 'Price', + '<=' => 'Price', + '==' => 'Price', + '>=' => 'Price', + '>' => 'Price' + ), + 'availableValues' => '', + 'type' => 'text', + 'class' => 'form-control', + 'value' => '', + 'selectedOperator' => '' + ), + MatchForTotalAmountManager::INPUT2 => array( + 'title' => 'Price', + 'availableOperators' => array('==' => 'Price'), + 'availableValues' => array( + 'EUR' => '€', + 'USD' => '$', + 'GBP' => '£', + ), + 'type' => 'select', + 'class' => 'form-control', + 'value' => '', + 'selectedOperator' => Operators::EQUAL + ) + ), + 'setOperators' => array( + 'price' => '==', + 'currency' => '==' + ), + 'setValues' => array( + 'price' => 400, + 'currency' => 'EUR' + ) + ); + $expected = $validators; + + $this->assertEquals($expected, $actual); + + } + /** * Tears down the fixture, for example, closes a network connection. * This method is called after a test is executed. diff --git a/core/lib/Thelia/Tests/Condition/Implementation/MatchForXArticlesManagerTest.php b/core/lib/Thelia/Tests/Condition/Implementation/MatchForXArticlesManagerTest.php index a618d3dcd..f59cd41b7 100644 --- a/core/lib/Thelia/Tests/Condition/Implementation/MatchForXArticlesManagerTest.php +++ b/core/lib/Thelia/Tests/Condition/Implementation/MatchForXArticlesManagerTest.php @@ -630,6 +630,142 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase } + /** + * Generate adapter stub + * + * @param int $cartTotalPrice Cart total price + * @param string $checkoutCurrency Checkout currency + * @param string $i18nOutput Output from each translation + * + * @return \PHPUnit_Framework_MockObject_MockObject + */ + public function generateFacadeStub($cartTotalPrice = 400, $checkoutCurrency = 'EUR', $i18nOutput = '') + { + $stubFacade = $this->getMockBuilder('\Thelia\Coupon\BaseFacade') + ->disableOriginalConstructor() + ->getMock(); + + $stubFacade->expects($this->any()) + ->method('getCartTotalPrice') + ->will($this->returnValue($cartTotalPrice)); + + $stubFacade->expects($this->any()) + ->method('getCheckoutCurrency') + ->will($this->returnValue($checkoutCurrency)); + + $stubFacade->expects($this->any()) + ->method('getConditionEvaluator') + ->will($this->returnValue(new ConditionEvaluator())); + + $stubTranslator = $this->getMockBuilder('\Thelia\Core\Translation\Translator') + ->disableOriginalConstructor() + ->getMock(); + $stubTranslator->expects($this->any()) + ->method('trans') + ->will($this->returnValue($i18nOutput)); + + $stubFacade->expects($this->any()) + ->method('getTranslator') + ->will($this->returnValue($stubTranslator)); + + return $stubFacade; + } + + /** + * Check getName i18n + * + * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::getName + * + */ + public function testGetName() + { + $stubFacade = $this->generateFacadeStub(399, 'EUR', 'Number of articles in cart'); + + /** @var FacadeInterface $stubFacade */ + $condition1 = new MatchForXArticlesManager($stubFacade); + + $actual = $condition1->getName(); + $expected = 'Number of articles in cart'; + $this->assertEquals($expected, $actual); + } + + /** + * Check tooltip i18n + * + * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::getToolTip + * + */ + public function testGetToolTip() + { + $stubFacade = $this->generateFacadeStub(399, 'EUR', 'If cart products quantity is superior to 4'); + + /** @var FacadeInterface $stubFacade */ + $condition1 = new MatchForXArticlesManager($stubFacade); + $operators = array( + MatchForXArticlesManager::INPUT1 => Operators::SUPERIOR + ); + $values = array( + MatchForXArticlesManager::INPUT1 => 4 + ); + $condition1->setValidatorsFromForm($operators, $values); + + $actual = $condition1->getToolTip(); + $expected = 'If cart products quantity is superior to 4'; + $this->assertEquals($expected, $actual); + } + + /** + * Check validator + * + * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::generateInputs + * + */ + public function testGetValidator() + { + $stubFacade = $this->generateFacadeStub(399, 'EUR', 'Price'); + + /** @var FacadeInterface $stubFacade */ + $condition1 = new MatchForXArticlesManager($stubFacade); + $operators = array( + MatchForXArticlesManager::INPUT1 => Operators::SUPERIOR + ); + $values = array( + MatchForXArticlesManager::INPUT1 => 4 + ); + $condition1->setValidatorsFromForm($operators, $values); + + $actual = $condition1->getValidators(); + + $validators = array( + 'inputs' => array( + MatchForXArticlesManager::INPUT1 => array( + 'title' => 'Price', + 'availableOperators' => array( + '<' => 'Price', + '<=' => 'Price', + '==' => 'Price', + '>=' => 'Price', + '>' => 'Price' + ), + 'type' => 'text', + 'class' => 'form-control', + 'value' => '', + 'selectedOperator' => '' + ) + ), + 'setOperators' => array( + 'quantity' => '>' + ), + 'setValues' => array( + 'quantity' => 4 + ) + ); + $expected = $validators; + + $this->assertEquals($expected, $actual); + + } + /** * Tears down the fixture, for example, closes a network connection. * This method is called after a test is executed.