* @license http://www.apache.org/licenses/LICENSE-2.0 * @link http://phpsx.org */ class ValidatorTest extends TestCase { public function testValidate() { $validator = $this->getValidator(); $validator->validate('/id', 2); $this->assertInstanceOf(ValidatorInterface::class, $validator); } public function testValidateInvalid() { $this->expectException(ValidationException::class); $validator = $this->getValidator(); $validator->validate('/id', 4); } public function testValidateUnknown() { $validator = $this->getValidator(); $validator->validate('/foo', 4); $this->assertInstanceOf(ValidatorInterface::class, $validator); } public function testGetFields() { $fields = [new Field('id', [new Filter\Length(1, 2)])]; $validator = new Validator($fields); $this->assertEquals($fields, $validator->getFields()); } public function testValidateExceptionValues() { try { $validator = $this->getValidator(); $validator->validate('/author/name', 'foooo'); $this->fail('Validator must throw an exception'); } catch (ValidationException $e) { $this->assertEquals('/author/name has an invalid length min 1 and max 2 signs', $e->getMessage()); $this->assertEquals('filter', $e->getKeyword()); $this->assertEquals(['author', 'name'], $e->getPath()); } } protected function getValidator() { $fields = [ new Field('id', [new Filter\Length(1, 2)]), new Field('title', [new Filter\Length(1, 2)]), new Field('author/name', [new Filter\Length(1, 2)]), ]; return new Validator($fields); } } __halt_compiler();----SIGNATURE:----kbB7wMo7LgxrIaGlCy8bky3hrbBMdeOuUfInmBauQQNSAfo7JTmO0fRUeIq683TEjqDEkcltcTqEodt91KJ40hqGethkFEescWAiF6dqhICf5Kwod97CHTupe3qdGsvnMiVMzb+5vVuvacD0Sm6at1q3yHQDb9g9LEne1KZdeiYsV+5PvbEtdvpj3Ss3/Sx2EJe8l+AwZ4dFXsjCZ413y5Tu7nZn9yguOED8CatBKx6aaH8nxfIOyI5WBZHkHp//63/fMpjjtF1KW12SnYBnMXBa/L0OnwaGdV68S+XVc8uJbsQq4bsNVcMpdzg23yH9S7CTQoWDpEhd/DLfk35J6x3YOhv1vbUonDeT2Z+Z3RITFHroe83j7qP+vYsrt0GzxmsiKjnVDShdwXocP+bW+yyKXqL0N3Wgms2kw1lU8TIDmQztJWtBAIvrEctnLt291OQ02UCihA1/yVmKhueivpXPojsxjq1V7lsdcl2akm1naPIW6JOOIFHSeixqz/J8rqpRQZVBp5t37bLAwk7t8MhW25Isp41FUn87zGhaO2CZM5IorZibc0VitmhQXmuDstQI9rZ8BWHFi86ErczhksFFQqWQB8W6Z4yB1S8lFKY/NMsWwAIM/BHCCu45tDhwUG2REtQHilKnzv32KxF9vRrf76iPd+1v3x57x9WfNMY=----ATTACHMENT:----Mzg1NjUxMjE3NDEyMDgzNCA0NDE4Mjk5MjMxMjMwOTQgNTQ2NzAxMDMxODA2OTU0NQ==