public function testHowWellItWorks()
 {
     $result = new ValidationResult();
     $this->assertFalse($result->hasErrors());
     $result->addFieldError('firstname', 'It is too short');
     $this->assertTrue($result->hasErrors());
     $arrayResult = $result->toArray();
     $this->assertTrue(is_array($arrayResult));
     $this->assertArrayHasKey('field_errors', $arrayResult);
     $this->assertFalse(isset($arrayResult['general_errors']));
     $this->assertTrue(is_array($arrayResult['field_errors']));
     $this->assertEquals(1, count($arrayResult['field_errors']));
     $this->assertArrayHasKey('firstname', $arrayResult['field_errors']);
     $this->assertTrue(is_array($arrayResult['field_errors']['firstname']));
     $this->assertArrayHasKey(0, $arrayResult['field_errors']['firstname']);
     $this->assertEquals('It is too short', $arrayResult['field_errors']['firstname'][0]);
     $firstnameErrors = $result->getFieldErrors('firstname');
     $this->assertTrue(is_array($firstnameErrors));
     $this->assertEquals(1, count($firstnameErrors));
     $this->assertEquals('It is too short', $firstnameErrors[0]);
     $result->addGeneralError('foo error');
     $this->assertTrue(in_array('foo error', $result->getGeneralErrors()));
     $arrayResult = $result->toArray();
     $this->assertEquals(1, count($arrayResult['general_errors']));
     $this->assertTrue(in_array('foo error', $arrayResult['general_errors']));
 }
 /**
  * {@inheritdoc}
  */
 public function validate($entity, array $config)
 {
     $validationResult = new ValidationResult();
     if (false === $config['ignore_standard_validator']) {
         foreach ($this->validator->validate($entity) as $violation) {
             /* @var ConstraintViolationInterface $violation */
             $validationResult->addFieldError($violation->getPropertyPath(), $violation->getMessageTemplate());
         }
     }
     if (false !== $config['entity_validation_method'] && in_array($config['entity_validation_method'], get_class_methods($entity))) {
         $methodName = $config['entity_validation_method'];
         $entity->{$methodName}($validationResult, $this->container);
     }
     return $validationResult;
 }
 public function testValidateBoth()
 {
     $entity = new DummyEntityToValidationWithMethod();
     $config = array('entity_validation_method' => 'validateIt', 'ignore_standard_validator' => false);
     $result = $this->validator->validate($entity, $config);
     $this->assertInstanceOf(ValidationResult::clazz(), $result);
     $this->assertTrue($result->hasErrors());
     $this->assertTrue(in_array('an error', $result->getGeneralErrors()));
     $this->assertInstanceOf(ValidationResult::clazz(), $entity->givenValidationResult);
     $this->assertInstanceOf('Symfony\\Component\\DependencyInjection\\ContainerInterface', $entity->givenContainer);
     $this->assertEquals(1, count($result->getFieldErrors('id')));
 }