diff --git a/Search/AbstractSearch.php b/Search/AbstractSearch.php index b39b20dc8..6a26ac494 100644 --- a/Search/AbstractSearch.php +++ b/Search/AbstractSearch.php @@ -22,6 +22,7 @@ namespace Chill\MainBundle\Search; use Chill\MainBundle\Search\SearchInterface; +use Chill\MainBundle\Search\ParsingException; /** * This class implements abstract search with most common responses. @@ -34,5 +35,21 @@ use Chill\MainBundle\Search\SearchInterface; */ abstract class AbstractSearch implements SearchInterface { - + /** + * + * @param type $string + * @return \DateTime + * @throws ParsingException if the date is not parseable + */ + public function parseDate($string) + { + try { + return new \DateTime($string); + } catch (ParsingException $ex) { + $exception = new ParsingException('The date is ' + . 'not parsable', 0, $ex); + throw $exception; + } + + } } \ No newline at end of file diff --git a/Tests/Search/AbstractSearchTest.php b/Tests/Search/AbstractSearchTest.php new file mode 100644 index 000000000..0e4c4e2bd --- /dev/null +++ b/Tests/Search/AbstractSearchTest.php @@ -0,0 +1,58 @@ + + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +namespace Chill\MainBundle\Tests\Search; + +/** + * Description of AbstractSearch + * + * @author Julien Fastré + */ +class AbstractSearchTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var Ab + * @var type + * @var typestractS + */ + private $stub; + + public function setUp() + { + $this->stub = $this->getMockForAbstractClass('Chill\MainBundle\Search\AbstractSearch', + array(), + '', + true, + true, + true, + array('parseDate')); + } + + public function testParseDateRegular() + { + $this->markTestSkipped('We have to learn how to mock concret methods for abstract class'); + + $date = $this->stub->parseDate('2014-05-01'); + + $this->assertEquals('2014', $date->format('Y')); + $this->assertEquals('05', $date->format('m')); + $this->assertEquals('01', $date->format('d')); + } +}