From 2a1263a63c06af48bbb6da60fd4bbaf7075a75bc Mon Sep 17 00:00:00 2001 From: Thomas Tourlourat Date: Tue, 19 Nov 2013 15:35:34 +0100 Subject: [PATCH 1/5] No Entity Manager defined exception --- .../Constraints/UniqueValidatorTest.php | 52 +++++++++++++++++++ .../Constraints/UniqueEntityValidator.php | 9 ++++ 2 files changed, 61 insertions(+) diff --git a/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueValidatorTest.php b/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueValidatorTest.php index 55e8d5f7b6563..5b3a39b30bb34 100644 --- a/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueValidatorTest.php +++ b/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueValidatorTest.php @@ -354,4 +354,56 @@ public function testAssociatedCompositeEntity() ); $violationsList = $validator->validate($associated); } + + /** + * @group EM + */ + public function testDedicatedEntityManagerNullObject() + { + $uniqueFields = array('name'); + $entityManagerName = 'foo'; + + $registry = $this->getMock('Doctrine\Common\Persistence\ManagerRegistry'); + + $constraint = new UniqueEntity(array( + 'fields' => $uniqueFields, + 'em' => $entityManagerName, + )); + + $uniqueValidator = new UniqueEntityValidator($registry); + + $entity = new SingleIntIdEntity(1, null); + + $this->setExpectedException( + 'Symfony\Component\Validator\Exception\RuntimeException', + 'There is not entity manager \'foo\'' + ); + + $uniqueValidator->validate($entity, $constraint); + } + + /** + * @group EM + */ + public function testEntityManagerNullObject() + { + $uniqueFields = array('name'); + + $registry = $this->getMock('Doctrine\Common\Persistence\ManagerRegistry'); + + $constraint = new UniqueEntity(array( + 'fields' => $uniqueFields, + )); + + $uniqueValidator = new UniqueEntityValidator($registry); + + $entity = new SingleIntIdEntity(1, null); + + $this->setExpectedException( + 'Symfony\Component\Validator\Exception\RuntimeException', + 'There is not entity manager associated with this entity \'Symfony\Bridge\Doctrine\Tests\Fixtures\SingleIntIdEntity\'' + ); + + $uniqueValidator->validate($entity, $constraint); + } } diff --git a/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php b/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php index 0d339afc6b8b5..a900c53ea3ed8 100644 --- a/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php +++ b/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php @@ -15,6 +15,7 @@ use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\Exception\UnexpectedTypeException; use Symfony\Component\Validator\Exception\ConstraintDefinitionException; +use Symfony\Component\Validator\Exception\RuntimeException; use Symfony\Component\Validator\ConstraintValidator; /** @@ -62,8 +63,16 @@ public function validate($entity, Constraint $constraint) if ($constraint->em) { $em = $this->registry->getManager($constraint->em); + + if(!$em) { + throw new RuntimeException(sprintf("There is not entity manager '%s'", $constraint->em)); + } } else { $em = $this->registry->getManagerForClass(get_class($entity)); + + if(!$em) { + throw new RuntimeException(sprintf("There is not entity manager associated with this entity '%s'", get_class($entity))); + } } $className = $this->context->getClassName(); From 5806fe7e3eb552a6d52e5b6f8e0154c023bdc3fb Mon Sep 17 00:00:00 2001 From: Thomas Tourlourat Date: Tue, 19 Nov 2013 16:55:24 +0100 Subject: [PATCH 2/5] Use ConstraintDefinitionException instead of RuntimeException Use object manager instead of entity manager --- .../Tests/Validator/Constraints/UniqueValidatorTest.php | 8 ++++---- .../Validator/Constraints/UniqueEntityValidator.php | 5 ++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueValidatorTest.php b/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueValidatorTest.php index 5b3a39b30bb34..e9920daa18b8b 100644 --- a/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueValidatorTest.php +++ b/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueValidatorTest.php @@ -375,8 +375,8 @@ public function testDedicatedEntityManagerNullObject() $entity = new SingleIntIdEntity(1, null); $this->setExpectedException( - 'Symfony\Component\Validator\Exception\RuntimeException', - 'There is not entity manager \'foo\'' + 'Symfony\Component\Validator\Exception\ConstraintDefinitionException', + 'There is not object manager \'foo\'' ); $uniqueValidator->validate($entity, $constraint); @@ -400,8 +400,8 @@ public function testEntityManagerNullObject() $entity = new SingleIntIdEntity(1, null); $this->setExpectedException( - 'Symfony\Component\Validator\Exception\RuntimeException', - 'There is not entity manager associated with this entity \'Symfony\Bridge\Doctrine\Tests\Fixtures\SingleIntIdEntity\'' + 'Symfony\Component\Validator\Exception\ConstraintDefinitionException', + 'There is not object manager associated with this entity \'Symfony\Bridge\Doctrine\Tests\Fixtures\SingleIntIdEntity\'' ); $uniqueValidator->validate($entity, $constraint); diff --git a/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php b/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php index a900c53ea3ed8..65c9924c2c56c 100644 --- a/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php +++ b/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php @@ -15,7 +15,6 @@ use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\Exception\UnexpectedTypeException; use Symfony\Component\Validator\Exception\ConstraintDefinitionException; -use Symfony\Component\Validator\Exception\RuntimeException; use Symfony\Component\Validator\ConstraintValidator; /** @@ -65,13 +64,13 @@ public function validate($entity, Constraint $constraint) $em = $this->registry->getManager($constraint->em); if(!$em) { - throw new RuntimeException(sprintf("There is not entity manager '%s'", $constraint->em)); + throw new ConstraintDefinitionException(sprintf("There is not object manager '%s'", $constraint->em)); } } else { $em = $this->registry->getManagerForClass(get_class($entity)); if(!$em) { - throw new RuntimeException(sprintf("There is not entity manager associated with this entity '%s'", get_class($entity))); + throw new ConstraintDefinitionException(sprintf("There is not object manager associated with this entity '%s'", get_class($entity))); } } From 4da5d0dd5ad60caa67aa20f261fd81af77a8211e Mon Sep 17 00:00:00 2001 From: Thomas Tourlourat Date: Tue, 19 Nov 2013 20:04:34 +0100 Subject: [PATCH 3/5] Remove group --- .../Tests/Validator/Constraints/UniqueValidatorTest.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueValidatorTest.php b/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueValidatorTest.php index e9920daa18b8b..db80729a39f78 100644 --- a/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueValidatorTest.php +++ b/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueValidatorTest.php @@ -355,9 +355,6 @@ public function testAssociatedCompositeEntity() $violationsList = $validator->validate($associated); } - /** - * @group EM - */ public function testDedicatedEntityManagerNullObject() { $uniqueFields = array('name'); @@ -382,9 +379,6 @@ public function testDedicatedEntityManagerNullObject() $uniqueValidator->validate($entity, $constraint); } - /** - * @group EM - */ public function testEntityManagerNullObject() { $uniqueFields = array('name'); From 8f3315e7c4ebccc9cf5a3c353f78d57b1ead9df0 Mon Sep 17 00:00:00 2001 From: Thomas Tourlourat Date: Tue, 19 Nov 2013 20:05:43 +0100 Subject: [PATCH 4/5] Be PSR compliant --- .../Doctrine/Validator/Constraints/UniqueEntityValidator.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php b/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php index 65c9924c2c56c..c0e1b327e5f4d 100644 --- a/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php +++ b/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php @@ -63,13 +63,13 @@ public function validate($entity, Constraint $constraint) if ($constraint->em) { $em = $this->registry->getManager($constraint->em); - if(!$em) { + if (!$em) { throw new ConstraintDefinitionException(sprintf("There is not object manager '%s'", $constraint->em)); } } else { $em = $this->registry->getManagerForClass(get_class($entity)); - if(!$em) { + if (!$em) { throw new ConstraintDefinitionException(sprintf("There is not object manager associated with this entity '%s'", get_class($entity))); } } From 32ebfca676fe0d9519af471a071cf91106520d79 Mon Sep 17 00:00:00 2001 From: Thomas Tourlourat Date: Tue, 19 Nov 2013 21:21:12 +0100 Subject: [PATCH 5/5] Fix text --- .../Tests/Validator/Constraints/UniqueValidatorTest.php | 4 ++-- .../Doctrine/Validator/Constraints/UniqueEntityValidator.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueValidatorTest.php b/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueValidatorTest.php index db80729a39f78..07514f18bcab8 100644 --- a/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueValidatorTest.php +++ b/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueValidatorTest.php @@ -373,7 +373,7 @@ public function testDedicatedEntityManagerNullObject() $this->setExpectedException( 'Symfony\Component\Validator\Exception\ConstraintDefinitionException', - 'There is not object manager \'foo\'' + 'Object manager "foo" does not exist.' ); $uniqueValidator->validate($entity, $constraint); @@ -395,7 +395,7 @@ public function testEntityManagerNullObject() $this->setExpectedException( 'Symfony\Component\Validator\Exception\ConstraintDefinitionException', - 'There is not object manager associated with this entity \'Symfony\Bridge\Doctrine\Tests\Fixtures\SingleIntIdEntity\'' + 'Unable to find the object manager associated with an entity of class "Symfony\Bridge\Doctrine\Tests\Fixtures\SingleIntIdEntity"' ); $uniqueValidator->validate($entity, $constraint); diff --git a/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php b/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php index c0e1b327e5f4d..f77e659619b3b 100644 --- a/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php +++ b/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php @@ -64,13 +64,13 @@ public function validate($entity, Constraint $constraint) $em = $this->registry->getManager($constraint->em); if (!$em) { - throw new ConstraintDefinitionException(sprintf("There is not object manager '%s'", $constraint->em)); + throw new ConstraintDefinitionException(sprintf('Object manager "%s" does not exist.', $constraint->em)); } } else { $em = $this->registry->getManagerForClass(get_class($entity)); if (!$em) { - throw new ConstraintDefinitionException(sprintf("There is not object manager associated with this entity '%s'", get_class($entity))); + throw new ConstraintDefinitionException(sprintf('Unable to find the object manager associated with an entity of class "%s".', get_class($entity))); } }