Added more tests for the forms.

This commit is contained in:
Dmitry Khomutov 2018-02-16 16:59:36 +07:00
parent c05d3d6c90
commit 09cee5a5df
No known key found for this signature in database
GPG key ID: EC19426474B37AAC
2 changed files with 46 additions and 20 deletions

View file

@ -9,17 +9,17 @@ class Input extends Element
/** /**
* @var boolean * @var boolean
*/ */
protected $_required = false; protected $required = false;
/** /**
* @var string * @var string
*/ */
protected $_pattern; protected $pattern;
/** /**
* @var callable * @var callable
*/ */
protected $_validator; protected $validator;
/** /**
* @var mixed * @var mixed
@ -29,12 +29,12 @@ class Input extends Element
/** /**
* @var string * @var string
*/ */
protected $_error; protected $error;
/** /**
* @var boolean * @var boolean
*/ */
protected $_customError = false; protected $customError = false;
/** /**
* @param string $name * @param string $name
@ -78,7 +78,7 @@ class Input extends Element
*/ */
public function getRequired() public function getRequired()
{ {
return $this->_required; return $this->required;
} }
/** /**
@ -88,7 +88,7 @@ class Input extends Element
*/ */
public function setRequired($required) public function setRequired($required)
{ {
$this->_required = (bool)$required; $this->required = (bool)$required;
return $this; return $this;
} }
@ -98,7 +98,7 @@ class Input extends Element
*/ */
public function getValidator() public function getValidator()
{ {
return $this->_validator; return $this->validator;
} }
/** /**
@ -109,7 +109,7 @@ class Input extends Element
public function setValidator($validator) public function setValidator($validator)
{ {
if (is_callable($validator) || $validator instanceof \Closure) { if (is_callable($validator) || $validator instanceof \Closure) {
$this->_validator = $validator; $this->validator = $validator;
} }
return $this; return $this;
@ -120,7 +120,7 @@ class Input extends Element
*/ */
public function getPattern() public function getPattern()
{ {
return $this->_pattern; return $this->pattern;
} }
/** /**
@ -130,7 +130,7 @@ class Input extends Element
*/ */
public function setPattern($pattern) public function setPattern($pattern)
{ {
$this->_pattern = $pattern; $this->pattern = $pattern;
return $this; return $this;
} }
@ -141,12 +141,12 @@ class Input extends Element
public function validate() public function validate()
{ {
if ($this->getRequired() && empty($this->value)) { if ($this->getRequired() && empty($this->value)) {
$this->_error = $this->getLabel() . ' is required.'; $this->error = $this->getLabel() . ' is required.';
return false; return false;
} }
if ($this->getPattern() && !preg_match('/' . $this->getPattern() . '/', $this->value)) { if ($this->getPattern() && !preg_match('/' . $this->getPattern() . '/', $this->value)) {
$this->_error = 'Invalid value entered.'; $this->error = 'Invalid value entered.';
return false; return false;
} }
@ -157,13 +157,13 @@ class Input extends Element
try { try {
call_user_func_array($validator, [$this->value]); call_user_func_array($validator, [$this->value]);
} catch (\Exception $ex) { } catch (\Exception $ex) {
$this->_error = $ex->getMessage(); $this->error = $ex->getMessage();
return false; return false;
} }
} }
if ($this->_customError) { if ($this->customError) {
return false; return false;
} }
@ -177,8 +177,8 @@ class Input extends Element
*/ */
public function setError($message) public function setError($message)
{ {
$this->_customError = true; $this->customError = true;
$this->_error = $message; $this->error = $message;
return $this; return $this;
} }
@ -189,8 +189,8 @@ class Input extends Element
protected function onPreRender(View &$view) protected function onPreRender(View &$view)
{ {
$view->value = $this->getValue(); $view->value = $this->getValue();
$view->error = $this->_error; $view->error = $this->error;
$view->pattern = $this->_pattern; $view->pattern = $this->pattern;
$view->required = $this->_required; $view->required = $this->required;
} }
} }

View file

@ -68,6 +68,19 @@ class FormTest extends TestCase
self::assertTrue(is_callable($f->getValidator())); self::assertTrue(is_callable($f->getValidator()));
} }
public function testInputCreate()
{
$text = Form\Element\Text::create(
'input-name',
'input-label',
true
);
self::assertEquals('input-name', $text->getName());
self::assertEquals('input-label', $text->getLabel());
self::assertTrue($text->getRequired());
}
public function testInputValidation() public function testInputValidation()
{ {
$f = new Form\Element\Text(); $f = new Form\Element\Text();
@ -98,6 +111,16 @@ class FormTest extends TestCase
self::assertFalse($f->validate()); self::assertFalse($f->validate());
} }
public function testInputValidationWithCustomError()
{
$f = new Form\Element\Text();
$f->setRequired(true);
$f->setValue('input-value');
$f->setError('Error!');
self::assertFalse($f->validate());
}
public function testFieldSetBasics() public function testFieldSetBasics()
{ {
$f = new Form\FieldSet(); $f = new Form\FieldSet();
@ -188,5 +211,8 @@ class FormTest extends TestCase
$e = new Form\Element\Url(); $e = new Form\Element\Url();
self::assertTrue(strpos($e->render(), 'url') !== false); self::assertTrue(strpos($e->render(), 'url') !== false);
$e = new Form\Element\Password();
self::assertTrue(strpos($e->render(), 'password') !== false);
} }
} }