From e638a927c031d7d7465599fa82b9961b614168a1 Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Wed, 18 Sep 2013 12:03:02 +0200 Subject: [PATCH 1/7] add more test for rewriten url --- core/lib/Thelia/Model/Product.php | 6 ++ .../Thelia/Model/Tools/UrlRewritingTrait.php | 2 +- .../Tests/Rewriting/ProductRewriteTest.php | 63 +++++++++++++------ install/insert.sql | 3 +- 4 files changed, 52 insertions(+), 22 deletions(-) diff --git a/core/lib/Thelia/Model/Product.php b/core/lib/Thelia/Model/Product.php index 825668cd0..9f7f9155f 100755 --- a/core/lib/Thelia/Model/Product.php +++ b/core/lib/Thelia/Model/Product.php @@ -200,6 +200,12 @@ class Product extends BaseProduct */ public function postDelete(ConnectionInterface $con = null) { + RewritingUrlQuery::create() + ->filterByView($this->getRewrittenUrlViewName()) + ->filterByViewId($this->getId()) + ->update(array( + "View" => ConfigQuery::read('passed_url_view', 'passed-url') + )); $this->dispatchEvent(TheliaEvents::AFTER_DELETEPRODUCT, new ProductEvent($this)); } } diff --git a/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php b/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php index 182dbcaf3..444e4dfa3 100644 --- a/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php +++ b/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php @@ -104,7 +104,7 @@ trait UrlRewritingTrait { ->filterByViewLocale($locale) ->filterByView($this->getRewrittenUrlViewName()) ->filterByViewId($this->getId()) - ->filterByRedirected(0) + ->filterByRedirected(null) ->findOne() ; diff --git a/core/lib/Thelia/Tests/Rewriting/ProductRewriteTest.php b/core/lib/Thelia/Tests/Rewriting/ProductRewriteTest.php index b6601289d..39590fb8a 100644 --- a/core/lib/Thelia/Tests/Rewriting/ProductRewriteTest.php +++ b/core/lib/Thelia/Tests/Rewriting/ProductRewriteTest.php @@ -33,46 +33,69 @@ use Thelia\Model\ProductQuery; */ class ProductRewriteTest extends \PHPUnit_Framework_TestCase { - protected static $productId; - - public static function setUpBeforeClass() - { - $product = new Product(); - $product->setRef(sprintf("TestRewrittenProduct%s",uniqid())) - ->setPosition(1) - ->setVisible(1) - ->setLocale('en_US') - ->setTitle('My english super Title') - ->setLocale('fr_FR') - ->setTitle('Mon super titre en français') - ->save(); - - self::$productId = $product->getId(); - } /** * @covers Thelia\Model\Tools\UrlRewritingTrait::generateRewrittenUrl */ - public function testFrenchRewrittenUrl() + public function testSimpleFrenchRewrittenUrl() { - $product = ProductQuery::create()->findPk(self::$productId); + $product = new Product(); + $product->setRef(sprintf("TestRewrittenProduct%s",uniqid())) + ->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$/', $product->getRewrittenUrl('fr_FR')); $rewrittenUrl = $product->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 + + $product->delete(); } /** * @covers Thelia\Model\Tools\UrlRewritingTrait::generateRewrittenUrl */ - public function testEnglishRewrittenUrl() + public function testSimpleEnglishRewrittenUrl() { - $product = ProductQuery::create()->findPk(self::$productId); + $product = new Product(); + $product->setRef(sprintf("TestRewrittenProduct%s",uniqid())) + ->setVisible(1) + ->setPosition(1) + ->setLocale('en_US') + ->setTitle('My english super Title') + ->save(); + + $this->assertRegExp('/^my-english-super-title(-[0-9]+)?\.html$/', $product->getRewrittenUrl('en_US')); $rewrittenUrl = $product->generateRewrittenUrl('en_US'); $this->assertNotNull($rewrittenUrl, "rewritten url can not be null"); $this->assertRegExp('/^my-english-super-title(-[0-9]+)?\.html$/', $rewrittenUrl); + + $product->delete(); + } + + public function testRewrittenWithoutTitle() + { + $product = new Product(); + $product->setRef(sprintf("TestRewrittenProduct%s",uniqid())) + ->setVisible(1) + ->setPosition(1) + ->setLocale('en_US') + ->setDescription('My english super Description') + ->save(); + + $this->assertEquals(strtolower(sprintf('%s.html', $product->getRef())), $product->getRewrittenUrl('en_US')); + + $rewrittenUrl = $product->generateRewrittenUrl('en_US'); + $this->assertNotNull($rewrittenUrl, "rewritten url can not be null"); + $this->assertEquals(strtolower(sprintf('%s-1.html', $product->getRef())), $rewrittenUrl); + + $product->delete(); } /** diff --git a/install/insert.sql b/install/insert.sql index 79bef3731..9680abd28 100755 --- a/install/insert.sql +++ b/install/insert.sql @@ -19,7 +19,8 @@ INSERT INTO `config` (`name`, `value`, `secured`, `hidden`, `created_at`, `updat ('image_cache_dir_from_web_root', 'cache/images', 0, 0, NOW(), NOW()), ('document_cache_dir_from_web_root', 'cache/documents', 0, 0, NOW(), NOW()), ('currency_rate_update_url', 'http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml', 0, 0, NOW(), NOW()), -('page_not_found_view', '404.html', 0, 0, NOW(), NOW()), +('page_not_found_view', '404', 0, 0, NOW(), NOW()), +('passed_url_view', 'passed-url', 0, 0, NOW(), NOW()), ('use_tax_free_amounts', 0, 0, 0, NOW(), NOW()), ('process_assets', '1', 0, 0, NOW(), NOW()), ('thelia_admin_remember_me_cookie_name', 'tarmcn', 0, 0, NOW(), NOW()), From 4eaf7288ba687af2a18f37273bb17f3b11539efa Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Wed, 18 Sep 2013 12:10:56 +0200 Subject: [PATCH 2/7] create helper for retrieving passed url view --- core/lib/Thelia/Model/ConfigQuery.php | 8 +++++++- core/lib/Thelia/Model/Product.php | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/core/lib/Thelia/Model/ConfigQuery.php b/core/lib/Thelia/Model/ConfigQuery.php index 7df592fd2..7f65b103d 100755 --- a/core/lib/Thelia/Model/ConfigQuery.php +++ b/core/lib/Thelia/Model/ConfigQuery.php @@ -56,9 +56,15 @@ class ConfigQuery extends BaseConfigQuery { public static function getPageNotFoundView() { - return self::read("page_not_found_view", '404.html'); + return self::read("page_not_found_view", '404'); } + public static function getPassedUrlView() + { + return self::read('passed_url_view', 'passed-url'); + } + + public static function getActiveTemplate() { return self::read('active-template', 'default'); diff --git a/core/lib/Thelia/Model/Product.php b/core/lib/Thelia/Model/Product.php index 9f7f9155f..cbb6c0051 100755 --- a/core/lib/Thelia/Model/Product.php +++ b/core/lib/Thelia/Model/Product.php @@ -204,7 +204,7 @@ class Product extends BaseProduct ->filterByView($this->getRewrittenUrlViewName()) ->filterByViewId($this->getId()) ->update(array( - "View" => ConfigQuery::read('passed_url_view', 'passed-url') + "View" => ConfigQuery::getPassedUrlView() )); $this->dispatchEvent(TheliaEvents::AFTER_DELETEPRODUCT, new ProductEvent($this)); } From 0214836a54c15000c64500c35d0623029af95205 Mon Sep 17 00:00:00 2001 From: franck Date: Wed, 18 Sep 2013 12:15:17 +0200 Subject: [PATCH 3/7] Added {url file='...'} to get file pathes --- .../Template/Smarty/Plugins/UrlGenerator.php | 21 +++++- templates/admin/default/home.html | 68 +++++++++---------- 2 files changed, 53 insertions(+), 36 deletions(-) diff --git a/core/lib/Thelia/Core/Template/Smarty/Plugins/UrlGenerator.php b/core/lib/Thelia/Core/Template/Smarty/Plugins/UrlGenerator.php index 56c853d00..aa96a0014 100755 --- a/core/lib/Thelia/Core/Template/Smarty/Plugins/UrlGenerator.php +++ b/core/lib/Thelia/Core/Template/Smarty/Plugins/UrlGenerator.php @@ -27,6 +27,7 @@ use Thelia\Core\Template\Smarty\SmartyPluginDescriptor; use Thelia\Core\Template\Smarty\AbstractSmartyPlugin; use Thelia\Tools\URL; use Thelia\Core\HttpFoundation\Request; +use Thelia\Core\Translation\Translator; class UrlGenerator extends AbstractSmartyPlugin { @@ -47,11 +48,27 @@ class UrlGenerator extends AbstractSmartyPlugin public function generateUrlFunction($params, &$smarty) { // the path to process - $path = $this->getParam($params, 'path'); + $path = $this->getParam($params, 'path', null); + $file = $this->getParam($params, 'file', null); + + if ($file !== null) { + $path = $file; + $mode = URL::PATH_TO_FILE; + } + else if ($path !== null) { + $mode = URL::WITH_INDEX_PAGE; + } + else { + throw \InvalidArgumentException(Translator::getInstance()->trans("Please specify either 'path' or 'file' parameter in {url} function.")); + } $target = $this->getParam($params, 'target', null); - $url = URL::getInstance()->absoluteUrl($path, $this->getArgsFromParam($params, array('path', 'target'))); + $url = URL::getInstance()->absoluteUrl( + $path, + $this->getArgsFromParam($params, array('path', 'file', 'target')), + $mode + ); if ($target != null) $url .= '#'.$target; diff --git a/templates/admin/default/home.html b/templates/admin/default/home.html index c196ebbe4..c5683620f 100755 --- a/templates/admin/default/home.html +++ b/templates/admin/default/home.html @@ -7,7 +7,7 @@
{module_include location='home_top'} - +
@@ -17,8 +17,8 @@
-
- +
+
@@ -26,11 +26,11 @@ -
+

- +
@@ -42,7 +42,7 @@
- +
@@ -91,10 +91,10 @@ 0 - +
- +
{intl l="Sales statistics"}
@@ -138,7 +138,7 @@ 25.00 € - +
@@ -206,7 +206,7 @@ -
25.00 €
+
@@ -230,7 +230,7 @@ {intl l="Click here"} - + @@ -245,7 +245,7 @@ {javascripts file='assets/js/jqplot/jquery.jqplot.min.js'} - + {javascripts file='assets/js/jqplot/plugins/jqplot.highlighter.min.js'} {/javascripts} @@ -259,19 +259,19 @@ From fd747036581877ed45f203dfb795be104497e14c Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Wed, 18 Sep 2013 12:24:36 +0200 Subject: [PATCH 4/7] create test rewritten url for category --- .../Thelia/Model/Tools/UrlRewritingTrait.php | 6 +- .../Tests/Rewriting/CategoryRewritingTest.php | 104 ++++++++++++++++++ .../Tests/Rewriting/ProductRewriteTest.php | 13 +-- 3 files changed, 114 insertions(+), 9 deletions(-) create mode 100644 core/lib/Thelia/Tests/Rewriting/CategoryRewritingTest.php diff --git a/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php b/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php index 444e4dfa3..d4b18ea24 100644 --- a/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php +++ b/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php @@ -61,7 +61,11 @@ trait UrlRewritingTrait { $this->setLocale($locale); - $title = $this->getTitle() ?: $this->getRef(); + $title = $this->getTitle(); + + if(null == $title) { + throw new \RuntimeException('Impossible to create an url if title is null'); + } // Replace all weird characters with dashes $string = preg_replace('/[^\w\-~_\.]+/u', '-', $title); diff --git a/core/lib/Thelia/Tests/Rewriting/CategoryRewritingTest.php b/core/lib/Thelia/Tests/Rewriting/CategoryRewritingTest.php new file mode 100644 index 000000000..4291d56de --- /dev/null +++ b/core/lib/Thelia/Tests/Rewriting/CategoryRewritingTest.php @@ -0,0 +1,104 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Tests\Rewriting; +use Thelia\Model\Category; + + +/** + * Class CategoryRewritingTest + * @package Thelia\Tests\Rewriting + * @author Manuel Raynaud + */ +class CategoryRewritingTest extends \PHPUnit_Framework_TestCase +{ + /** + * @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 + */ + public function testSimpleEnglishRewrittenUrl() + { + $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'); + } +} \ No newline at end of file diff --git a/core/lib/Thelia/Tests/Rewriting/ProductRewriteTest.php b/core/lib/Thelia/Tests/Rewriting/ProductRewriteTest.php index 39590fb8a..1c7a7ae45 100644 --- a/core/lib/Thelia/Tests/Rewriting/ProductRewriteTest.php +++ b/core/lib/Thelia/Tests/Rewriting/ProductRewriteTest.php @@ -79,6 +79,11 @@ class ProductRewriteTest extends \PHPUnit_Framework_TestCase $product->delete(); } + /** + * @covers Thelia\Model\Tools\UrlRewritingTrait::generateRewrittenUrl + * @expectedException \RuntimeException + * @expectedExceptionMessage Impossible to create an url if title is null + */ public function testRewrittenWithoutTitle() { $product = new Product(); @@ -88,14 +93,6 @@ class ProductRewriteTest extends \PHPUnit_Framework_TestCase ->setLocale('en_US') ->setDescription('My english super Description') ->save(); - - $this->assertEquals(strtolower(sprintf('%s.html', $product->getRef())), $product->getRewrittenUrl('en_US')); - - $rewrittenUrl = $product->generateRewrittenUrl('en_US'); - $this->assertNotNull($rewrittenUrl, "rewritten url can not be null"); - $this->assertEquals(strtolower(sprintf('%s-1.html', $product->getRef())), $rewrittenUrl); - - $product->delete(); } /** From 84813ced1ebc59faa6d63eab22c9a4ccaef1e213 Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Wed, 18 Sep 2013 13:15:36 +0200 Subject: [PATCH 5/7] dispatch event when generate new url --- .../Core/Event/GenerateRewrittenUrlEvent.php | 60 +++++++++++++++++++ core/lib/Thelia/Core/Event/TheliaEvents.php | 5 ++ .../Thelia/Model/Tools/UrlRewritingTrait.php | 12 ++++ 3 files changed, 77 insertions(+) create mode 100644 core/lib/Thelia/Core/Event/GenerateRewrittenUrlEvent.php diff --git a/core/lib/Thelia/Core/Event/GenerateRewrittenUrlEvent.php b/core/lib/Thelia/Core/Event/GenerateRewrittenUrlEvent.php new file mode 100644 index 000000000..7ee22cddd --- /dev/null +++ b/core/lib/Thelia/Core/Event/GenerateRewrittenUrlEvent.php @@ -0,0 +1,60 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Core\Event; + + +/** + * Class GenerateRewrittenUrlEvent + * @package Thelia\Core\Event + * @author Manuel Raynaud + */ +class GenerateRewrittenUrlEvent extends ActionEvent { + + protected $object; + protected $locale; + + protected $url; + + public function __construct($object, $locale) + { + $this->object; + $this->locale; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function isRewritten() + { + return null !== $this->url; + } + + public function getUrl() + { + return $this->url; + } + +} \ No newline at end of file diff --git a/core/lib/Thelia/Core/Event/TheliaEvents.php b/core/lib/Thelia/Core/Event/TheliaEvents.php index dab2db208..6a024f33b 100755 --- a/core/lib/Thelia/Core/Event/TheliaEvents.php +++ b/core/lib/Thelia/Core/Event/TheliaEvents.php @@ -441,4 +441,9 @@ final class TheliaEvents */ const MAILTRANSPORTER_CONFIG = 'action.mailertransporter.config'; + /** + * sent when Thelia try to generate a rewriten url + */ + const GENERATE_REWRITTENURL = 'action.generate_rewritenurl'; + } diff --git a/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php b/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php index d4b18ea24..19947efa6 100644 --- a/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php +++ b/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php @@ -23,6 +23,8 @@ namespace Thelia\Model\Tools; +use Thelia\Core\Event\GenerateRewrittenUrlEvent; +use Thelia\Core\Event\TheliaEvents; use Thelia\Exception\UrlRewritingException; use Thelia\Model\RewritingUrlQuery; use Thelia\Model\RewritingUrl; @@ -61,6 +63,16 @@ trait UrlRewritingTrait { $this->setLocale($locale); + $generateEvent = new GenerateRewrittenUrlEvent($this, $locale); + + $this->dispatchEvent(TheliaEvents::GENERATE_REWRITTENURL, $generateEvent); + + + if($generateEvent->isRewritten()) + { + return $generateEvent->getUrl(); + } + $title = $this->getTitle(); if(null == $title) { From 7c53eeea2fdf7322eaa297c8eea433574ce07134 Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Wed, 18 Sep 2013 14:32:49 +0200 Subject: [PATCH 6/7] 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 From 8e8b55a2082941d1f12ddb9eef511a6f917bb62b Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Wed, 18 Sep 2013 14:33:54 +0200 Subject: [PATCH 7/7] refactor product rewriting test case --- .../Tests/Rewriting/ProductRewriteTest.php | 73 +------------------ 1 file changed, 4 insertions(+), 69 deletions(-) diff --git a/core/lib/Thelia/Tests/Rewriting/ProductRewriteTest.php b/core/lib/Thelia/Tests/Rewriting/ProductRewriteTest.php index 1c7a7ae45..2bff1bf5c 100644 --- a/core/lib/Thelia/Tests/Rewriting/ProductRewriteTest.php +++ b/core/lib/Thelia/Tests/Rewriting/ProductRewriteTest.php @@ -31,79 +31,14 @@ use Thelia\Model\ProductQuery; * @package Thelia\Tests\Rewriting * @author Manuel Raynaud */ -class ProductRewriteTest extends \PHPUnit_Framework_TestCase +class ProductRewriteTest extends BaseRewritingObject { /** - * @covers Thelia\Model\Tools\UrlRewritingTrait::generateRewrittenUrl + * @return mixed an instance of Product, Folder, Content or Category Model */ - public function testSimpleFrenchRewrittenUrl() + function getObject() { - $product = new Product(); - $product->setRef(sprintf("TestRewrittenProduct%s",uniqid())) - ->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$/', $product->getRewrittenUrl('fr_FR')); - - $rewrittenUrl = $product->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 - - $product->delete(); - } - - /** - * @covers Thelia\Model\Tools\UrlRewritingTrait::generateRewrittenUrl - */ - public function testSimpleEnglishRewrittenUrl() - { - $product = new Product(); - $product->setRef(sprintf("TestRewrittenProduct%s",uniqid())) - ->setVisible(1) - ->setPosition(1) - ->setLocale('en_US') - ->setTitle('My english super Title') - ->save(); - - $this->assertRegExp('/^my-english-super-title(-[0-9]+)?\.html$/', $product->getRewrittenUrl('en_US')); - - $rewrittenUrl = $product->generateRewrittenUrl('en_US'); - $this->assertNotNull($rewrittenUrl, "rewritten url can not be null"); - $this->assertRegExp('/^my-english-super-title(-[0-9]+)?\.html$/', $rewrittenUrl); - - $product->delete(); - } - - /** - * @covers Thelia\Model\Tools\UrlRewritingTrait::generateRewrittenUrl - * @expectedException \RuntimeException - * @expectedExceptionMessage Impossible to create an url if title is null - */ - public function testRewrittenWithoutTitle() - { - $product = new Product(); - $product->setRef(sprintf("TestRewrittenProduct%s",uniqid())) - ->setVisible(1) - ->setPosition(1) - ->setLocale('en_US') - ->setDescription('My english super Description') - ->save(); - } - - /** - * @covers Thelia\Model\Tools\UrlRewritingTrait::generateRewrittenUrl - * @expectedException \RuntimeException - * @expectedExceptionMessage Object product must be saved before generating url - */ - public function testOnNotSavedProduct() - { - $product = new Product(); - - $product->generateRewrittenUrl('fr_FR'); + return new Product(); } } \ No newline at end of file