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);
     });
 }
Esempio n. 3
0
 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']);
 }
Esempio n. 4
0
 /**
  * @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())]);
 }
Esempio n. 5
0
 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()]);
 }
Esempio n. 9
0
 /**
  * @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());
 }