From 9d90b08813ebaf29adcaee42531f6ef10b703578 Mon Sep 17 00:00:00 2001 From: Victor Bjelkholm Date: Tue, 29 Jul 2014 16:39:14 +0200 Subject: [PATCH] Show instance name in instanceOf error message --- src/Valitron/Validator.php | 4 ++++ tests/Valitron/ValidateTest.php | 13 +++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/Valitron/Validator.php b/src/Valitron/Validator.php index 0a96bf2..8709fc9 100644 --- a/src/Valitron/Validator.php +++ b/src/Valitron/Validator.php @@ -736,6 +736,10 @@ class Validator } if ($param instanceof \DateTime) { $param = $param->format('Y-m-d'); + } else { + if(is_object($param)) { + $param = get_class($param); + } } // Use custom label instead of field name if set if(is_string($params[0])) { diff --git a/tests/Valitron/ValidateTest.php b/tests/Valitron/ValidateTest.php index d1ae011..0a71b18 100644 --- a/tests/Valitron/ValidateTest.php +++ b/tests/Valitron/ValidateTest.php @@ -829,6 +829,19 @@ class ValidateTest extends BaseTestCase $this->assertTrue($v->validate()); } + public function testInstanceOfErrorMessageShowsInstanceName() + { + $v = new Validator(array('attributeName' => new Validator(array()))); + $v->rule('instanceOf', 'attributeName', new stdClass()); + $v->validate(); + $expected_error = array( + "attributeName" => array( + "AttributeName must be an instance of 'stdClass'" + ) + ); + $this->assertEquals($expected_error, $v->errors()); + } + public function testInstanceOfInvalidWithString() { $v = new Validator(array('attributeName' => new stdClass()));