From 7c53eeea2fdf7322eaa297c8eea433574ce07134 Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Wed, 18 Sep 2013 14:32:49 +0200 Subject: [PATCH] create base class for testing rewriting method on each object --- .../Tests/Rewriting/BaseRewritingObject.php | 108 ++++++++++++++++++ .../Tests/Rewriting/CategoryRewritingTest.php | 69 +---------- .../Tests/Rewriting/ContentRewritingTest.php | 43 +++++++ .../Tests/Rewriting/FolderRewritingTest.php | 43 +++++++ 4 files changed, 198 insertions(+), 65 deletions(-) create mode 100644 core/lib/Thelia/Tests/Rewriting/BaseRewritingObject.php create mode 100644 core/lib/Thelia/Tests/Rewriting/ContentRewritingTest.php create mode 100644 core/lib/Thelia/Tests/Rewriting/FolderRewritingTest.php diff --git a/core/lib/Thelia/Tests/Rewriting/BaseRewritingObject.php b/core/lib/Thelia/Tests/Rewriting/BaseRewritingObject.php new file mode 100644 index 000000000..449a9162d --- /dev/null +++ b/core/lib/Thelia/Tests/Rewriting/BaseRewritingObject.php @@ -0,0 +1,108 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Tests\Rewriting; + + +/** + * Class BaseRewritingObject + * @package Thelia\Tests\Rewriting + * @author Manuel Raynaud + */ +abstract class BaseRewritingObject extends \PHPUnit_Framework_TestCase +{ + + /** + * @return mixed an instance of Product, Folder, Content or Category Model + */ + abstract function getObject(); + + /** + * @covers Thelia\Model\Tools\UrlRewritingTrait::generateRewrittenUrl + */ + public function testSimpleFrenchRewrittenUrl() + { + $object = $this->getObject(); + $object->setVisible(1) + ->setPosition(1) + ->setLocale('fr_FR') + ->setTitle('Mon super titre en français') + ->save(); + + $this->assertRegExp('/^mon-super-titre-en-français(-[0-9]+)?\.html$/', $object->getRewrittenUrl('fr_FR')); + + $rewrittenUrl = $object->generateRewrittenUrl('fr_FR'); + $this->assertNotNull($rewrittenUrl, "rewritten url can not be null"); + $this->assertRegExp('/^mon-super-titre-en-français(-[0-9]+)?\.html$/', $rewrittenUrl); + //mon-super-titre-en-français-2.html + + $object->delete(); + } + + /** + * @covers Thelia\Model\Tools\UrlRewritingTrait::generateRewrittenUrl + */ + public function testSimpleEnglishRewrittenUrl() + { + $object = $this->getObject(); + $object->setVisible(1) + ->setPosition(1) + ->setLocale('en_US') + ->setTitle('My english super Title') + ->save(); + + $this->assertRegExp('/^my-english-super-title(-[0-9]+)?\.html$/', $object->getRewrittenUrl('en_US')); + + $rewrittenUrl = $object->generateRewrittenUrl('en_US'); + $this->assertNotNull($rewrittenUrl, "rewritten url can not be null"); + $this->assertRegExp('/^my-english-super-title(-[0-9]+)?\.html$/', $rewrittenUrl); + + $object->delete(); + } + + /** + * @covers Thelia\Model\Tools\UrlRewritingTrait::generateRewrittenUrl + * @expectedException \RuntimeException + * @expectedExceptionMessage Impossible to create an url if title is null + */ + public function testRewrittenWithoutTitle() + { + $object = $this->getObject(); + $object->setVisible(1) + ->setPosition(1) + ->setLocale('en_US') + ->setDescription('My english super Description') + ->save(); + } + + /** + * @covers Thelia\Model\Tools\UrlRewritingTrait::generateRewrittenUrl + * @expectedException \RuntimeException + */ + public function testOnNotSavedObject() + { + $object = $this->getObject(); + + $object->generateRewrittenUrl('fr_FR'); + } +} \ No newline at end of file diff --git a/core/lib/Thelia/Tests/Rewriting/CategoryRewritingTest.php b/core/lib/Thelia/Tests/Rewriting/CategoryRewritingTest.php index 4291d56de..247fdc8a9 100644 --- a/core/lib/Thelia/Tests/Rewriting/CategoryRewritingTest.php +++ b/core/lib/Thelia/Tests/Rewriting/CategoryRewritingTest.php @@ -30,75 +30,14 @@ use Thelia\Model\Category; * @package Thelia\Tests\Rewriting * @author Manuel Raynaud */ -class CategoryRewritingTest extends \PHPUnit_Framework_TestCase +class CategoryRewritingTest extends BaseRewritingObject { - /** - * @covers Thelia\Model\Tools\UrlRewritingTrait::generateRewrittenUrl - */ - public function testSimpleFrenchRewrittenUrl() - { - $category = new Category(); - $category->setVisible(1) - ->setPosition(1) - ->setLocale('fr_FR') - ->setTitle('Mon super titre en français') - ->save(); - - $this->assertRegExp('/^mon-super-titre-en-français(-[0-9]+)?\.html$/', $category->getRewrittenUrl('fr_FR')); - - $rewrittenUrl = $category->generateRewrittenUrl('fr_FR'); - $this->assertNotNull($rewrittenUrl, "rewritten url can not be null"); - $this->assertRegExp('/^mon-super-titre-en-français(-[0-9]+)?\.html$/', $rewrittenUrl); - //mon-super-titre-en-français-2.html - - $category->delete(); - } /** - * @covers Thelia\Model\Tools\UrlRewritingTrait::generateRewrittenUrl + * @return \Thelia\Model\Category */ - public function testSimpleEnglishRewrittenUrl() + function getObject() { - $category = new Category(); - $category->setVisible(1) - ->setPosition(1) - ->setLocale('en_US') - ->setTitle('My english super Title') - ->save(); - - $this->assertRegExp('/^my-english-super-title(-[0-9]+)?\.html$/', $category->getRewrittenUrl('en_US')); - - $rewrittenUrl = $category->generateRewrittenUrl('en_US'); - $this->assertNotNull($rewrittenUrl, "rewritten url can not be null"); - $this->assertRegExp('/^my-english-super-title(-[0-9]+)?\.html$/', $rewrittenUrl); - - $category->delete(); - } - - /** - * @covers Thelia\Model\Tools\UrlRewritingTrait::generateRewrittenUrl - * @expectedException \RuntimeException - * @expectedExceptionMessage Impossible to create an url if title is null - */ - public function testRewrittenWithoutTitle() - { - $category = new Category(); - $category->setVisible(1) - ->setPosition(1) - ->setLocale('en_US') - ->setDescription('My english super Description') - ->save(); - } - - /** - * @covers Thelia\Model\Tools\UrlRewritingTrait::generateRewrittenUrl - * @expectedException \RuntimeException - * @expectedExceptionMessage Object category must be saved before generating url - */ - public function testOnNotSavedProduct() - { - $product = new Category(); - - $product->generateRewrittenUrl('fr_FR'); + return new Category(); } } \ No newline at end of file diff --git a/core/lib/Thelia/Tests/Rewriting/ContentRewritingTest.php b/core/lib/Thelia/Tests/Rewriting/ContentRewritingTest.php new file mode 100644 index 000000000..e06ff62b2 --- /dev/null +++ b/core/lib/Thelia/Tests/Rewriting/ContentRewritingTest.php @@ -0,0 +1,43 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Tests\Rewriting; +use Thelia\Model\Content; + + +/** + * Class ContentRewritingTest + * @package Thelia\Tests\Rewriting + * @author Manuel Raynaud + */ +class ContentRewritingTest extends BaseRewritingObject +{ + + /** + * @return \Thelia\Model\Content + */ + function getObject() + { + return new Content(); + } +} \ No newline at end of file diff --git a/core/lib/Thelia/Tests/Rewriting/FolderRewritingTest.php b/core/lib/Thelia/Tests/Rewriting/FolderRewritingTest.php new file mode 100644 index 000000000..db0dbc897 --- /dev/null +++ b/core/lib/Thelia/Tests/Rewriting/FolderRewritingTest.php @@ -0,0 +1,43 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Tests\Rewriting; +use Thelia\Model\Folder; + + +/** + * Class FolderRewritingTest + * @package Thelia\Tests\Rewriting + * @author Manuel Raynaud + */ +class FolderRewritingTest extends BaseRewritingObject +{ + + /** + * @return mixed an instance of Product, Folder, Content or Category Model + */ + function getObject() + { + return new Folder(); + } +} \ No newline at end of file