From 8102f1c51441b3ba4f6a3bc733571d25b1f0f2d7 Mon Sep 17 00:00:00 2001 From: Xavier Coureau Date: Wed, 13 Jan 2016 18:25:42 +0100 Subject: [PATCH 1/4] Pass association instead of ID as argument --- .../Validator/Constraints/UniqueEntityValidator.php | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php b/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php index 2ee3f1da2e737..5ae077dc9f20f 100644 --- a/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php +++ b/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php @@ -92,17 +92,6 @@ public function validate($entity, Constraint $constraint) * getter methods in the Proxy are being bypassed. */ $em->initializeObject($criteria[$fieldName]); - - $relatedClass = $em->getClassMetadata($class->getAssociationTargetClass($fieldName)); - $relatedId = $relatedClass->getIdentifierValues($criteria[$fieldName]); - - if (count($relatedId) > 1) { - throw new ConstraintDefinitionException( - 'Associated entities are not allowed to have more than one identifier field to be '. - 'part of a unique constraint in: '.$class->getName().'#'.$fieldName - ); - } - $criteria[$fieldName] = array_pop($relatedId); } } From b901bb150b2f6f462558e79e5206a2321ea4dcb2 Mon Sep 17 00:00:00 2001 From: Xavier Coureau Date: Wed, 13 Jan 2016 19:13:50 +0100 Subject: [PATCH 2/4] Fixed tests --- .../Validator/Constraints/UniqueEntityValidatorTest.php | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php b/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php index f5c37e6787ab4..5123a80e4946c 100644 --- a/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php +++ b/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php @@ -398,7 +398,7 @@ public function testAssociatedEntity() $this->buildViolation('myMessage') ->atPath('property.path.single') - ->setInvalidValue(1) + ->setInvalidValue($entity1) ->assertRaised(); } @@ -422,10 +422,6 @@ public function testAssociatedEntityWithNull() $this->assertNoViolation(); } - /** - * @expectedException \Symfony\Component\Validator\Exception\ConstraintDefinitionException - * @expectedExceptionMessage Associated entities are not allowed to have more than one identifier field - */ public function testAssociatedCompositeEntity() { $constraint = new UniqueEntity(array( @@ -443,6 +439,8 @@ public function testAssociatedCompositeEntity() $this->em->flush(); $this->validator->validate($associated, $constraint); + + $this->assertNoViolation(); } /** From 467a04914e8b97611b901f1002dbe8b4aa4ec6bb Mon Sep 17 00:00:00 2001 From: Xavier Coureau Date: Wed, 13 Jan 2016 19:40:58 +0100 Subject: [PATCH 3/4] Removed useless test --- .../Constraints/UniqueEntityValidatorTest.php | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php b/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php index 5123a80e4946c..d0156f05df039 100644 --- a/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php +++ b/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php @@ -422,27 +422,6 @@ public function testAssociatedEntityWithNull() $this->assertNoViolation(); } - public function testAssociatedCompositeEntity() - { - $constraint = new UniqueEntity(array( - 'message' => 'myMessage', - 'fields' => array('composite'), - 'em' => self::EM_NAME, - )); - - $composite = new CompositeIntIdEntity(1, 1, 'test'); - $associated = new AssociationEntity(); - $associated->composite = $composite; - - $this->em->persist($composite); - $this->em->persist($associated); - $this->em->flush(); - - $this->validator->validate($associated, $constraint); - - $this->assertNoViolation(); - } - /** * @expectedException \Symfony\Component\Validator\Exception\ConstraintDefinitionException * @expectedExceptionMessage Object manager "foo" does not exist. From 8fa2df230f868046a0551634f0d4de1b235d8f33 Mon Sep 17 00:00:00 2001 From: Xavier Coureau Date: Wed, 13 Jan 2016 19:42:45 +0100 Subject: [PATCH 4/4] Typo --- .../Tests/Validator/Constraints/UniqueEntityValidatorTest.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php b/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php index d0156f05df039..7c061d7ac286b 100644 --- a/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php +++ b/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php @@ -16,7 +16,6 @@ use Doctrine\Common\Persistence\ObjectManager; use Doctrine\Common\Persistence\ObjectRepository; use Symfony\Bridge\Doctrine\Test\DoctrineTestHelper; -use Symfony\Bridge\Doctrine\Tests\Fixtures\CompositeIntIdEntity; use Symfony\Component\Validator\Tests\Constraints\AbstractConstraintValidatorTest; use Symfony\Bridge\Doctrine\Tests\Fixtures\SingleIntIdEntity; use Symfony\Bridge\Doctrine\Tests\Fixtures\DoubleNameEntity;