Add tests for custom labels & fix #20

Ticket: https://github.com/vlucas/valitron/issues/20
This commit is contained in:
Vance Lucas 2013-08-09 11:42:55 -05:00
parent 2e6218414b
commit f0aa5011b6
2 changed files with 33 additions and 1 deletions

View File

@ -612,7 +612,7 @@ class Validator
$i = 1;
foreach ($params as $k => $v) {
$tag = '{field'. $i .'}';
$label = isset($params[$k]) && isset($this->_labels[$params[$k]]) ? $this->_labels[$params[$k]] : $tag;
$label = isset($params[$k]) && !is_array($params[$k]) && isset($this->_labels[$params[$k]]) ? $this->_labels[$params[$k]] : $tag;
$msg = str_replace($tag, $label, $msg);
$i++;
}

View File

@ -511,6 +511,29 @@ class ValidateTest extends \PHPUnit_Framework_TestCase
$this->assertEquals($v1->errors(), $v2->errors());
}
public function testCustomLabelInMessage()
{
$v = new Valitron\Validator(array());
$v->rule('required', 'name')->message('{field} is required')->label('NAME!!!');
$v->validate();
$this->assertEquals(array('NAME!!! is required'), $v->errors('name'));
}
public function testCustomLabelArrayInMessage()
{
$v = new Valitron\Validator(array());
$v->rule('required', array('name', 'email'))->message('{field} is required');
$v->labels(array(
'name' => 'Name',
'email' => 'Email address'
));
$v->validate();
$this->assertEquals(array(
'name' => array('Name is required'),
'email' => array('Email address is required')
), $v->errors());
}
/**
* Custom rules and callbacks
*/
@ -580,6 +603,15 @@ class ValidateTest extends \PHPUnit_Framework_TestCase
$v->rule('testRule', 'name', array('foo', 'bar'))->message('Invalid name selected.');
$this->assertFalse($v->validate());
}
public function testAddRuleCallbackArrayWithArrayAsExtraParameterAndCustomMessageLabel()
{
$v = new Validator(array('name' => 'Chester Tester'));
$v->labels(array('name' => 'Name'));
$v->addRule('testRule', array($this, 'sampleObjectCallbackFalse'));
$v->rule('testRule', 'name', array('foo', 'bar'))->message('Invalid name selected.');
$this->assertFalse($v->validate());
}
}
function sampleFunctionCallback($field, $value, array $params) {