/**
  * 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 if error will be thrown for existing row that does produces a duplicate value, but changes ID.
  */
 public function testExistingRecordReportsAnErrorOnDuplicateValueOnIdChange()
 {
     $validator = new Validator($this->connection, 'writers', 8, 1, ['name' => 'Alexander Pushkin']);
     $is_unique = $validator->unique('name');
     $this->assertFalse($is_unique);
     $this->assertTrue($validator->hasErrors());
     $name_errors = $validator->getFieldErrors('name');
     $this->assertInternalType('array', $name_errors);
     $this->assertCount(1, $name_errors);
 }