Adds new validation method for rendered newsletter body

This commit is contained in:
Vlad
2017-07-24 11:11:22 -04:00
parent 1a522794d6
commit 81a2ba8e03
2 changed files with 24 additions and 3 deletions

View File

@ -10,7 +10,8 @@ class ModelValidator extends \Sudzy\Engine {
function __construct() {
parent::__construct();
$this->validators = array(
'validEmail' => 'validateEmail'
'validEmail' => 'validateEmail',
'validRenderedNewsletterBody' => 'validateRenderedNewsletterBody'
);
$this->setupValidators();
}
@ -27,4 +28,11 @@ class ModelValidator extends \Sudzy\Engine {
function validateEmail($email) {
return is_email($email) !== false;
}
}
function validateRenderedNewsletterBody($newsletter_body) {
$newsletter_body = (!is_serialized($newsletter_body)) ?
$newsletter_body :
unserialize($newsletter_body);
return (is_null($newsletter_body) || (is_array($newsletter_body) && !empty($newsletter_body['html']) && !empty($newsletter_body['text'])));
}
}

View File

@ -20,6 +20,19 @@ class ModelValidatorTest extends MailPoetTest {
function testItValidatesEmail() {
expect($this->validator->validateEmail('test'))->false();
expect($this->validator->validateEmail('tést@éxample.com'))->false();
expect($this->validator->validateEmail('test@example.com'))->true();
}
}
function testItValidatesRenderedNewsletterBody() {
expect($this->validator->validateRenderedNewsletterBody('test'))->false();
expect($this->validator->validateRenderedNewsletterBody(serialize('test')))->false();
expect($this->validator->validateRenderedNewsletterBody(array('html' => 'test', 'text' => null)))->false();
expect($this->validator->validateRenderedNewsletterBody(array('html' => null, 'text' => 'test')))->false();
expect($this->validator->validateRenderedNewsletterBody(null))->true();
expect($this->validator->validateRenderedNewsletterBody(serialize(null)))->true();
expect($this->validator->validateRenderedNewsletterBody(serialize(array('html' => 'test', 'text' => 'test'))))->true();
expect($this->validator->validateRenderedNewsletterBody(array('html' => 'test', 'text' => 'test')))->true();
}
}