FIX Validate Category / Tag Titles

Closes #695
This commit is contained in:
Nick Lamprecht 2023-01-31 19:16:54 +01:00
parent 6c0ae1f28a
commit af17da7ecc
No known key found for this signature in database
GPG Key ID: BCE3F3360957C58B
5 changed files with 56 additions and 0 deletions

View File

@ -27,6 +27,8 @@ class BlogCategory extends DataObject implements CategorisationObject
*/
const DUPLICATE_EXCEPTION = 'DUPLICATE';
const EMPTY_TITLE_EXCEPTION = 'EMPTY_TITLE';
/**
* {@inheritDoc}
* @var string

View File

@ -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');
}
}

View File

@ -27,6 +27,8 @@ class BlogTag extends DataObject implements CategorisationObject
*/
const DUPLICATE_EXCEPTION = 'DUPLICATE';
const EMPTY_TITLE_EXCEPTION = 'EMPTY_TITLE';
/**
* {@inheritDoc}
* @var string

View File

@ -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']);
}
}
}

View File

@ -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']);
}
}
}