diff --git a/core/lib/Thelia/Core/Template/Loop/FeatureValue.php b/core/lib/Thelia/Core/Template/Loop/FeatureValue.php index 67aa7b402..403baf37a 100755 --- a/core/lib/Thelia/Core/Template/Loop/FeatureValue.php +++ b/core/lib/Thelia/Core/Template/Loop/FeatureValue.php @@ -87,7 +87,7 @@ class FeatureValue extends BaseLoop $search->filterByProductId($product, Criteria::EQUAL); - $featureAvailable = $this->geFeature_available(); + $featureAvailable = $this->getFeature_available(); if (null !== $featureAvailable) { $search->filterByFeatureAvId($featureAvailable, Criteria::IN); diff --git a/core/lib/Thelia/Core/Template/Loop/Product.php b/core/lib/Thelia/Core/Template/Loop/Product.php index e9c1f689a..6debd5034 100755 --- a/core/lib/Thelia/Core/Template/Loop/Product.php +++ b/core/lib/Thelia/Core/Template/Loop/Product.php @@ -86,7 +86,7 @@ class Product extends BaseLoop new TypeCollection( new Type\EnumListType(array('alpha', 'alpha_reverse', /*'min_price', 'max_price',*/ 'manual', 'manual_reverse', 'ref', /*'promo', 'new',*/ 'random', 'given_id')) ), - 'manual' + 'alpha' ), Argument::createIntListTypeArgument('exclude'), Argument::createIntListTypeArgument('exclude_category'), @@ -271,12 +271,12 @@ class Product extends BaseLoop $search->orderBy('real_price', Criteria::DESC); break;*/ case "manual": - if(null === $this->category || count($this->category) != 1) + if(null === $category || count($category) != 1) throw new \InvalidArgumentException('Manual order cannot be set without single category argument'); $search->orderByPosition(Criteria::ASC); break; case "manual_reverse": - if(null === $this->category || count($this->category) != 1) + if(null === $category || count($category) != 1) throw new \InvalidArgumentException('Manual order cannot be set without single category argument'); $search->orderByPosition(Criteria::DESC); break; diff --git a/core/lib/Thelia/Tests/Core/Template/Element/BaseLoopTestor.php b/core/lib/Thelia/Tests/Core/Template/Element/BaseLoopTestor.php new file mode 100755 index 000000000..bad6dc428 --- /dev/null +++ b/core/lib/Thelia/Tests/Core/Template/Element/BaseLoopTestor.php @@ -0,0 +1,86 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Tests\Core\Template\Element; + +use Symfony\Component\EventDispatcher\EventDispatcher; +use Thelia\Core\HttpFoundation\Request; +use Thelia\Core\Security\SecurityContext; +use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage; +use Thelia\Core\HttpFoundation\Session\Session; + +/** + * + * @author Etienne Roudeix + * + */ +abstract class BaseLoopTestor extends \PHPUnit_Framework_TestCase +{ + protected $request; + protected $dispatcher; + protected $securityContext; + + protected $instance; + + abstract public function getTestedClassName(); + abstract public function getTestedInstance(); + abstract public function getMandatoryArguments(); + + protected function getMethod($name) { + $class = new \ReflectionClass($this->getTestedClassName()); + $method = $class->getMethod($name); + $method->setAccessible(true); + return $method; + } + + public function setUp() + { + $this->request = new Request(); + $this->request->setSession(new Session(new MockArraySessionStorage())); + + $this->dispatcher = new EventDispatcher(); + + $this->securityContext = new SecurityContext($this->request); + + $this->instance = $this->getTestedInstance(); + $this->instance->initializeArgs($this->getMandatoryArguments()); + } + + public function testGetArgDefinitions() + { + $method = $this->getMethod('getArgDefinitions'); + + $methodReturn = $method->invoke($this->instance); + + $this->assertInstanceOf('Thelia\Core\Template\Loop\Argument\ArgumentCollection', $methodReturn); + } + + public function testExec() + { + $method = $this->getMethod('exec'); + + $methodReturn = $method->invokeArgs($this->instance, array(null)); + + $this->assertInstanceOf('\Thelia\Core\Template\Element\LoopResult', $methodReturn); + } +} diff --git a/core/lib/Thelia/Tests/Core/Template/Loop/AccessoryTest.php b/core/lib/Thelia/Tests/Core/Template/Loop/AccessoryTest.php new file mode 100755 index 000000000..99f5a0310 --- /dev/null +++ b/core/lib/Thelia/Tests/Core/Template/Loop/AccessoryTest.php @@ -0,0 +1,51 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Tests\Core\Template\Loop; + +use Thelia\Tests\Core\Template\Element\BaseLoopTestor; + +use Thelia\Core\Template\Loop\Accessory; + +/** + * + * @author Etienne Roudeix + * + */ +class AccessoryTest extends BaseLoopTestor +{ + public function getTestedClassName() + { + return 'Thelia\Core\Template\Loop\Accessory'; + } + + public function getTestedInstance() + { + return new Accessory($this->request, $this->dispatcher, $this->securityContext); + } + + public function getMandatoryArguments() + { + return array('product' => 1); + } +} diff --git a/core/lib/Thelia/Tests/Core/Template/Loop/AddressTest.php b/core/lib/Thelia/Tests/Core/Template/Loop/AddressTest.php new file mode 100755 index 000000000..7ca5c094b --- /dev/null +++ b/core/lib/Thelia/Tests/Core/Template/Loop/AddressTest.php @@ -0,0 +1,51 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Tests\Core\Template\Loop; + +use Thelia\Tests\Core\Template\Element\BaseLoopTestor; + +use Thelia\Core\Template\Loop\Address; + +/** + * + * @author Etienne Roudeix + * + */ +class AddressTest extends BaseLoopTestor +{ + public function getTestedClassName() + { + return 'Thelia\Core\Template\Loop\Address'; + } + + public function getTestedInstance() + { + return new Address($this->request, $this->dispatcher, $this->securityContext); + } + + public function getMandatoryArguments() + { + return array(); + } +} diff --git a/core/lib/Thelia/Tests/Core/Template/Loop/CategoryTest.php b/core/lib/Thelia/Tests/Core/Template/Loop/CategoryTest.php new file mode 100755 index 000000000..f33d07868 --- /dev/null +++ b/core/lib/Thelia/Tests/Core/Template/Loop/CategoryTest.php @@ -0,0 +1,51 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Tests\Core\Template\Loop; + +use Thelia\Tests\Core\Template\Element\BaseLoopTestor; + +use Thelia\Core\Template\Loop\Category; + +/** + * + * @author Etienne Roudeix + * + */ +class CategoryTest extends BaseLoopTestor +{ + public function getTestedClassName() + { + return 'Thelia\Core\Template\Loop\Category'; + } + + public function getTestedInstance() + { + return new Category($this->request, $this->dispatcher, $this->securityContext); + } + + public function getMandatoryArguments() + { + return array(); + } +} diff --git a/core/lib/Thelia/Tests/Core/Template/Loop/CountryTest.php b/core/lib/Thelia/Tests/Core/Template/Loop/CountryTest.php new file mode 100755 index 000000000..389d0bc5d --- /dev/null +++ b/core/lib/Thelia/Tests/Core/Template/Loop/CountryTest.php @@ -0,0 +1,51 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Tests\Core\Template\Loop; + +use Thelia\Tests\Core\Template\Element\BaseLoopTestor; + +use Thelia\Core\Template\Loop\Country; + +/** + * + * @author Etienne Roudeix + * + */ +class CountryTest extends BaseLoopTestor +{ + public function getTestedClassName() + { + return 'Thelia\Core\Template\Loop\Country'; + } + + public function getTestedInstance() + { + return new Country($this->request, $this->dispatcher, $this->securityContext); + } + + public function getMandatoryArguments() + { + return array(); + } +} diff --git a/core/lib/Thelia/Tests/Core/Template/Loop/CustomerTest.php b/core/lib/Thelia/Tests/Core/Template/Loop/CustomerTest.php new file mode 100755 index 000000000..62bcaa3be --- /dev/null +++ b/core/lib/Thelia/Tests/Core/Template/Loop/CustomerTest.php @@ -0,0 +1,51 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Tests\Core\Template\Loop; + +use Thelia\Tests\Core\Template\Element\BaseLoopTestor; + +use Thelia\Core\Template\Loop\Customer; + +/** + * + * @author Etienne Roudeix + * + */ +class CustomerTest extends BaseLoopTestor +{ + public function getTestedClassName() + { + return 'Thelia\Core\Template\Loop\Customer'; + } + + public function getTestedInstance() + { + return new Customer($this->request, $this->dispatcher, $this->securityContext); + } + + public function getMandatoryArguments() + { + return array(); + } +} diff --git a/core/lib/Thelia/Tests/Core/Template/Loop/FeatureAvailableTest.php b/core/lib/Thelia/Tests/Core/Template/Loop/FeatureAvailableTest.php new file mode 100755 index 000000000..e93b05a69 --- /dev/null +++ b/core/lib/Thelia/Tests/Core/Template/Loop/FeatureAvailableTest.php @@ -0,0 +1,51 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Tests\Core\Template\Loop; + +use Thelia\Tests\Core\Template\Element\BaseLoopTestor; + +use Thelia\Core\Template\Loop\FeatureAvailable; + +/** + * + * @author Etienne Roudeix + * + */ +class FeatureAvailableTest extends BaseLoopTestor +{ + public function getTestedClassName() + { + return 'Thelia\Core\Template\Loop\FeatureAvailable'; + } + + public function getTestedInstance() + { + return new FeatureAvailable($this->request, $this->dispatcher, $this->securityContext); + } + + public function getMandatoryArguments() + { + return array(); + } +} diff --git a/core/lib/Thelia/Tests/Core/Template/Loop/FeatureTest.php b/core/lib/Thelia/Tests/Core/Template/Loop/FeatureTest.php new file mode 100755 index 000000000..155088173 --- /dev/null +++ b/core/lib/Thelia/Tests/Core/Template/Loop/FeatureTest.php @@ -0,0 +1,51 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Tests\Core\Template\Loop; + +use Thelia\Tests\Core\Template\Element\BaseLoopTestor; + +use Thelia\Core\Template\Loop\Feature; + +/** + * + * @author Etienne Roudeix + * + */ +class FeatureTest extends BaseLoopTestor +{ + public function getTestedClassName() + { + return 'Thelia\Core\Template\Loop\Feature'; + } + + public function getTestedInstance() + { + return new Feature($this->request, $this->dispatcher, $this->securityContext); + } + + public function getMandatoryArguments() + { + return array(); + } +} diff --git a/core/lib/Thelia/Tests/Core/Template/Loop/FeatureValueTest.php b/core/lib/Thelia/Tests/Core/Template/Loop/FeatureValueTest.php new file mode 100755 index 000000000..3f6a14a16 --- /dev/null +++ b/core/lib/Thelia/Tests/Core/Template/Loop/FeatureValueTest.php @@ -0,0 +1,51 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Tests\Core\Template\Loop; + +use Thelia\Tests\Core\Template\Element\BaseLoopTestor; + +use Thelia\Core\Template\Loop\FeatureValue; + +/** + * + * @author Etienne Roudeix + * + */ +class FeatureValueTest extends BaseLoopTestor +{ + public function getTestedClassName() + { + return 'Thelia\Core\Template\Loop\FeatureValue'; + } + + public function getTestedInstance() + { + return new FeatureValue($this->request, $this->dispatcher, $this->securityContext); + } + + public function getMandatoryArguments() + { + return array('product' => 1, 'feature' => 1); + } +} diff --git a/core/lib/Thelia/Tests/Core/Template/Loop/ProductTest.php b/core/lib/Thelia/Tests/Core/Template/Loop/ProductTest.php new file mode 100755 index 000000000..58eaf55fd --- /dev/null +++ b/core/lib/Thelia/Tests/Core/Template/Loop/ProductTest.php @@ -0,0 +1,51 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Tests\Core\Template\Loop; + +use Thelia\Tests\Core\Template\Element\BaseLoopTestor; + +use Thelia\Core\Template\Loop\Product; + +/** + * + * @author Etienne Roudeix + * + */ +class ProductTest extends BaseLoopTestor +{ + public function getTestedClassName() + { + return 'Thelia\Core\Template\Loop\Product'; + } + + public function getTestedInstance() + { + return new Product($this->request, $this->dispatcher, $this->securityContext); + } + + public function getMandatoryArguments() + { + return array(); + } +} diff --git a/core/lib/Thelia/Tests/Core/Template/Loop/TitleTest.php b/core/lib/Thelia/Tests/Core/Template/Loop/TitleTest.php index c506c22f5..392e97930 100755 --- a/core/lib/Thelia/Tests/Core/Template/Loop/TitleTest.php +++ b/core/lib/Thelia/Tests/Core/Template/Loop/TitleTest.php @@ -23,6 +23,8 @@ namespace Thelia\Tests\Core\Template\Loop; +use Thelia\Tests\Core\Template\Element\BaseLoopTestor; + use Thelia\Core\Template\Loop\Title; /** @@ -30,24 +32,20 @@ use Thelia\Core\Template\Loop\Title; * @author Etienne Roudeix * */ -class TitleTest extends \PHPUnit_Framework_TestCase +class TitleTest extends BaseLoopTestor { - public function testGetArgDefinitions() + public function getTestedClassName() { - $title = new Title(); -/* - $this->assertTrue($collection->getCount() == 3); + return 'Thelia\Core\Template\Loop\Title'; + } - $this->assertTrue($collection->key() == 'arg0'); - $collection->next(); - $this->assertTrue($collection->key() == 'arg1'); - $collection->next(); - $this->assertTrue($collection->key() == 'arg2'); - $collection->next(); + public function getTestedInstance() + { + return new Title($this->request, $this->dispatcher, $this->securityContext); + } - $this->assertFalse($collection->valid()); - - $collection->rewind(); - $this->assertTrue($collection->key() == 'arg0');*/ + public function getMandatoryArguments() + { + return array(); } }