/**
  * Test if NULL value fails validation when it is not allowed.
  */
 public function testNullFailsValidationWhenNotAllowed()
 {
     $validator = new Validator($this->connection, 'users', null, null, ['email' => null]);
     $is_valid_email = $validator->email('email', false);
     $this->assertFalse($is_valid_email);
     $this->assertTrue($validator->hasErrors());
     $email_errors = $validator->getFieldErrors('email');
     $this->assertInternalType('array', $email_errors);
     $this->assertCount(1, $email_errors);
 }
 /**
  * Test if NULL value fails validation when it is not allowed.
  */
 public function testNullFailsValidationWhenNotAllowed()
 {
     $validator = new Validator($this->connection, 'users', null, null, ['continent' => null]);
     $is_valid_continent = $validator->inArray('continent', $this->continents);
     $this->assertFalse($is_valid_continent);
     $this->assertTrue($validator->hasErrors());
     $continent_errors = $validator->getFieldErrors('continent');
     $this->assertInternalType('array', $continent_errors);
     $this->assertCount(1, $continent_errors);
 }
 /**
  * Test if NULL value fails validation when it is not allowed.
  */
 public function testNullFailsValidationWhenNotAllowed()
 {
     $validator = new Validator($this->connection, 'users', null, null, ['age' => null]);
     $is_valid_age = $validator->greaterThan('age', $this->min_age);
     $this->assertFalse($is_valid_age);
     $this->assertTrue($validator->hasErrors());
     $age_errors = $validator->getFieldErrors('age');
     $this->assertInternalType('array', $age_errors);
     $this->assertCount(1, $age_errors);
 }
 /**
  * Test type check.
  */
 public function testTypeCheck()
 {
     $validator = new Validator($this->connection, 'writers', null, null, ['name' => '0']);
     $is_present = $validator->present('name');
     $this->assertTrue($is_present);
     $this->assertFalse($validator->hasErrors());
     $name_errors = $validator->getFieldErrors('name');
     $this->assertInternalType('array', $name_errors);
     $this->assertCount(0, $name_errors);
 }
 /**
  * Test if NULL value fails validation when it is not allowed.
  */
 public function testNullFailsValidationWhenNotAllowed()
 {
     $validator = new Validator($this->connection, 'users', null, null, ['homepage_url' => null]);
     $is_valid_url = $validator->url('homepage_url', false);
     $this->assertFalse($is_valid_url);
     $this->assertTrue($validator->hasErrors());
     $url_errors = $validator->getFieldErrors('homepage_url');
     $this->assertInternalType('array', $url_errors);
     $this->assertCount(1, $url_errors);
     $this->assertContains("Value of 'homepage_url' is required", $url_errors);
 }
 /**
  * Test if validator properly produces and populates ValidationException.
  */
 public function testValidatorException()
 {
     $validator = new Validator($this->connection, 'writers', null, null, ['name' => 'Leo Tolstoy']);
     $is_unique = $validator->unique('name');
     $this->assertFalse($is_unique);
     $this->assertTrue($validator->hasErrors());
     $exception = $validator->createException();
     $this->assertInstanceOf(ValidationException::class, $exception);
     $this->assertTrue($exception->hasErrors());
     $this->assertTrue($exception->hasError('name'));
     $this->assertFalse($exception->hasError('unknown_column_here'));
 }
 public function testValidatorReturnsAllErrors()
 {
     $validator = new Validator($this->connection, 'writers', null, null, ['name' => 'Leo Tolstoy', 'birthday' => null]);
     $validator->unique('name');
     $validator->present('birthday');
     $this->assertTrue($validator->hasErrors());
     $errors = $validator->getErrors();
     $this->assertInternalType('array', $errors);
     $this->assertCount(2, $errors);
     $this->assertArrayHasKey('name', $errors);
     $this->assertInternalType('array', $errors['name']);
     $this->assertCount(1, $errors['name']);
     $this->assertEquals("Value of 'name' needs to be unique", $errors['name'][0]);
     $this->assertArrayHasKey('birthday', $errors);
     $this->assertInternalType('array', $errors['birthday']);
     $this->assertCount(1, $errors['birthday']);
     $this->assertEquals("Value of 'birthday' is required", $errors['birthday'][0]);
 }
 /**
  * Test unique where filter properly reports an error when conditions are met.
  */
 public function testErrorWhenUniqueWhereIsMatched()
 {
     $validator = new Validator($this->connection, 'writers', null, null, ['name' => 'Leo Tolstoy']);
     $is_unique = $validator->uniqueWhere('name', ['birthday < ?', new DateValue('1900-01-01')]);
     $this->assertFalse($is_unique);
     $this->assertTrue($validator->hasErrors());
     $name_errors = $validator->getFieldErrors('name');
     $this->assertInternalType('array', $name_errors);
     $this->assertCount(1, $name_errors);
 }