public function testKeysNestedInvalid() { $input = ['foo' => 'bar', 'baz' => 'quux', 'array' => ['foo' => 'bar', 'baz' => 'quux']]; $schema = V::arr()->keys(['foo' => V::string()->valid('bar'), 'baz' => V::string()->valid('quux'), 'array' => V::arr()->keys(['foo' => V::string()->valid('bar'), 'baz' => V::string()->valid('quux1')])]); V::validate($input, $schema, function ($err, $output) { $message = 'key "array" is invalid, because ' . '[ key "baz" is invalid, because ' . '[ value "quux" is not allowed ] ]'; $this->assertEquals($message, $err); $this->assertNull($output); }); }
public function testAlternative() { V::validate('foo', V::alternative()->any(V::string()->valid('foo'), V::boolean()), function ($err, $output) { $this->assertNull($err); $this->assertEquals('foo', $output); }); V::validate(true, V::alternative()->any(V::string()->valid('foo'), V::boolean()), function ($err, $output) { $this->assertNull($err); $this->assertTrue(true, $output); }); V::validate(null, V::alternative()->any(V::string()->valid('foo'), V::boolean()), function ($err, $output) { $this->assertEquals('none of the alternatives matched', $err); $this->assertNull($output); }); }
public function testAnyDefaultPreset() { $input = ['firstname' => 'Smok', 'lastname' => 'Wawelski', 'username' => 'foobar', 'created' => '2015-01-01', 'status' => 'foo']; $schema = V::arr()->keys(['username' => V::string()->defaultValue(function ($context) { return strtolower($context['firstname']) . '-' . strtolower($context['lastname']); }), 'firstname' => V::string(), 'lastname' => V::string(), 'created' => V::date()->dateTimeObject()->defaultValue(new \DateTime()), 'status' => V::string()->defaultValue('registered')]); $user = V::attempt($input, $schema); $this->assertEquals('foobar', $user['username']); $this->assertEquals('Smok', $user['firstname']); $this->assertEquals('Wawelski', $user['lastname']); $this->assertEquals('2015-01-01 00:00:00', $user['created']->format('Y-m-d H:i:s')); $this->assertEquals('foo', $user['status']); }
/** * @return AbstractSchema */ public function getOptionsSchema() { return V::arr()->keys(['search' => V::alternative(V::string()->min(1), V::arr()->notEmpty()), 'replace' => V::alternative(V::string(), V::arr()->notEmpty())]); }
public function testStringTrimInvalidOption() { $this->setExpectedException('InvalidArgumentException', 'key "convert" is invalid, because [ value is not a boolean ]'); V::assert('foo', V::string()->trim('foo')); }
public function testAnyCustom() { $schema = V::string()->custom(function (InputValue $input) { if ($input->getValue() !== 'string') { throw new ValidationException('custom error message'); } }); V::validate('string', $schema, function ($err, $output) { $this->assertNull($err); $this->assertEquals('string', $output); }); $schema = V::string()->custom(function (InputValue $input) { if ($input->getValue() === 'string') { throw new ValidationException('custom error message'); } }); V::validate('string', $schema, function ($err, $output) { $this->assertEquals('custom error message', $err); $this->assertNull($output); }); }
public function testStringNotEmpty() { V::validate('foo', V::string()->notEmpty(), function ($err, $output) { $this->assertNull($err); $this->assertEquals('foo', $output); }); V::validate('', V::string()->notEmpty(), function ($err, $output) { $this->assertEquals('value length < 1', $err); $this->assertNull($output); }); }
/** * @return AbstractSchema */ public function getOptionsSchema() { return V::arr()->keys(['pattern' => V::string()->min(1), 'replace' => V::string()]); }
/** * @return AbstractSchema */ protected function getOptionsSchema() { return Validation::arr()->keys(['pattern' => Validation::string()]); }
/** * @return AbstractSchema */ protected function getOptionsSchema() { return V::arr()->keys(['of' => V::string()->min(1)]); }
public function testAssertPositive() { V::assert('string', V::string()); }