diff --git a/src/Model/BlogCategory.php b/src/Model/BlogCategory.php index ae69c7d..94590a3 100644 --- a/src/Model/BlogCategory.php +++ b/src/Model/BlogCategory.php @@ -27,6 +27,8 @@ class BlogCategory extends DataObject implements CategorisationObject */ const DUPLICATE_EXCEPTION = 'DUPLICATE'; + const EMPTY_TITLE_EXCEPTION = 'EMPTY_TITLE'; + /** * {@inheritDoc} * @var string diff --git a/src/Model/BlogObject.php b/src/Model/BlogObject.php index d067fb3..93b127c 100644 --- a/src/Model/BlogObject.php +++ b/src/Model/BlogObject.php @@ -72,6 +72,10 @@ trait BlogObject $validation->addError($this->getDuplicateError(), self::DUPLICATE_EXCEPTION); } + if(empty($this->Title)) { + $validation->addError($this->getEmptyTitleError(), self::EMPTY_TITLE_EXCEPTION); + } + return $validation; } @@ -244,4 +248,14 @@ trait BlogObject * @return string */ abstract protected function getDuplicateError(); + + /** + * Returns an error message for this object when it tries to write with an empty title. + * + * @return string + */ + protected function getEmptyTitleError() + { + return _t(__CLASS__ . '.EmptyTitle', 'Title must not be empty'); + } } diff --git a/src/Model/BlogTag.php b/src/Model/BlogTag.php index 4180f67..66bf3fb 100644 --- a/src/Model/BlogTag.php +++ b/src/Model/BlogTag.php @@ -27,6 +27,8 @@ class BlogTag extends DataObject implements CategorisationObject */ const DUPLICATE_EXCEPTION = 'DUPLICATE'; + const EMPTY_TITLE_EXCEPTION = 'EMPTY_TITLE'; + /** * {@inheritDoc} * @var string diff --git a/tests/php/BlogCategoryTest.php b/tests/php/BlogCategoryTest.php index c189e32..50bfd09 100755 --- a/tests/php/BlogCategoryTest.php +++ b/tests/php/BlogCategoryTest.php @@ -167,4 +167,23 @@ class BlogCategoryTest extends FunctionalTest $this->assertEquals(BlogTag::DUPLICATE_EXCEPTION, $messages[0]['messageType']); } } + + public function testEmptyTitle() + { + $blog = $this->objFromFixture(Blog::class, 'FirstBlog'); + + $category = new BlogCategory(); + $category->Title = ''; + $category->BlogID = $blog->ID; + $category->URLSegment = 'test'; + + try { + $category->write(); + $this->fail('BlogCategory with empty title is written'); + } catch (ValidationException $e) { + $messages = $e->getResult()->getMessages(); + $this->assertCount(1, $messages); + $this->assertEquals(BlogCategory::EMPTY_TITLE_EXCEPTION, $messages[0]['messageType']); + } + } } diff --git a/tests/php/BlogTagTest.php b/tests/php/BlogTagTest.php index 754b338..28ef254 100755 --- a/tests/php/BlogTagTest.php +++ b/tests/php/BlogTagTest.php @@ -195,4 +195,23 @@ class BlogTagTest extends FunctionalTest $tag->write(); $this->assertEquals($tag->URLSegment, "another-test"); } + + public function testEmptyTitle() + { + $blog = $this->objFromFixture(Blog::class, 'FirstBlog'); + + $tag = new BlogTag(); + $tag->Title = ''; + $tag->BlogID = $blog->ID; + $tag->URLSegment = 'test'; + + try { + $tag->write(); + $this->fail('BlogTag with empty title is written'); + } catch (ValidationException $e) { + $messages = $e->getResult()->getMessages(); + $this->assertCount(1, $messages); + $this->assertEquals(BlogTag::EMPTY_TITLE_EXCEPTION, $messages[0]['messageType']); + } + } }