Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 52b260f

Browse files
author
Ilya Vertakov
committed
Add unique entity violation cause
1 parent 8be06c4 commit 52b260f

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ public function testValidateUniqueness()
190190
->atPath('property.path.name')
191191
->setParameter('{{ value }}', '"Foo"')
192192
->setInvalidValue($entity2)
193+
->setCause([$entity1])
193194
->setCode(UniqueEntity::NOT_UNIQUE_ERROR)
194195
->assertRaised();
195196
}
@@ -215,6 +216,7 @@ public function testValidateCustomErrorPath()
215216
->atPath('property.path.bar')
216217
->setParameter('{{ value }}', '"Foo"')
217218
->setInvalidValue($entity2)
219+
->setCause([$entity1])
218220
->setCode(UniqueEntity::NOT_UNIQUE_ERROR)
219221
->assertRaised();
220222
}
@@ -268,6 +270,7 @@ public function testValidateUniquenessWithIgnoreNullDisabled()
268270
->atPath('property.path.name')
269271
->setParameter('{{ value }}', '"Foo"')
270272
->setInvalidValue('Foo')
273+
->setCause([$entity1])
271274
->setCode(UniqueEntity::NOT_UNIQUE_ERROR)
272275
->assertRaised();
273276
}
@@ -346,6 +349,7 @@ public function testValidateUniquenessWithValidCustomErrorPath()
346349
->atPath('property.path.name2')
347350
->setParameter('{{ value }}', '"Bar"')
348351
->setInvalidValue('Bar')
352+
->setCause([$entity1])
349353
->setCode(UniqueEntity::NOT_UNIQUE_ERROR)
350354
->assertRaised();
351355
}
@@ -481,6 +485,7 @@ public function testAssociatedEntity()
481485
->setParameter('{{ value }}', 'object("Symfony\Bridge\Doctrine\Tests\Fixtures\SingleIntIdEntity") identified by (id => 1)')
482486
->setInvalidValue($entity1)
483487
->setCode(UniqueEntity::NOT_UNIQUE_ERROR)
488+
->setCause([$associated, $associated2])
484489
->assertRaised();
485490
}
486491

@@ -517,6 +522,7 @@ public function testValidateUniquenessNotToStringEntityWithAssociatedEntity()
517522
->atPath('property.path.single')
518523
->setParameter('{{ value }}', $expectedValue)
519524
->setInvalidValue($entity1)
525+
->setCause([$associated, $associated2])
520526
->setCode(UniqueEntity::NOT_UNIQUE_ERROR)
521527
->assertRaised();
522528
}
@@ -575,6 +581,7 @@ public function testValidateUniquenessWithArrayValue()
575581
->atPath('property.path.phoneNumbers')
576582
->setParameter('{{ value }}', 'array')
577583
->setInvalidValue(array(123))
584+
->setCause([$entity1])
578585
->setCode(UniqueEntity::NOT_UNIQUE_ERROR)
579586
->assertRaised();
580587
}
@@ -652,6 +659,7 @@ public function testValidateInheritanceUniqueness()
652659
->atPath('property.path.name')
653660
->setInvalidValue('Foo')
654661
->setCode('23bd9dbf-6b9b-41cd-a99e-4844bcf3077f')
662+
->setCause([$entity1])
655663
->setParameters(array('{{ value }}' => '"Foo"'))
656664
->assertRaised();
657665
}
@@ -703,6 +711,7 @@ public function testValidateUniquenessWithCompositeObjectNoToStringIdEntity()
703711
->atPath('property.path.objectOne')
704712
->setParameter('{{ value }}', $expectedValue)
705713
->setInvalidValue($objectOne)
714+
->setCause([$entity])
706715
->setCode(UniqueEntity::NOT_UNIQUE_ERROR)
707716
->assertRaised();
708717
}
@@ -730,6 +739,43 @@ public function testValidateUniquenessWithCustomDoctrineTypeValue()
730739
->atPath('property.path.name')
731740
->setParameter('{{ value }}', $expectedValue)
732741
->setInvalidValue($existingEntity->name)
742+
->setCause([$existingEntity])
743+
->setCode(UniqueEntity::NOT_UNIQUE_ERROR)
744+
->assertRaised();
745+
}
746+
747+
/**
748+
* This is a functional test as there is a large integration necessary to get the validator working.
749+
*/
750+
public function testValidateUniquenessCause()
751+
{
752+
$constraint = new UniqueEntity(array(
753+
'message' => 'myMessage',
754+
'fields' => array('name'),
755+
'em' => self::EM_NAME,
756+
));
757+
758+
$entity1 = new SingleIntIdEntity(1, 'Foo');
759+
$entity2 = new SingleIntIdEntity(2, 'Foo');
760+
761+
$this->validator->validate($entity1, $constraint);
762+
763+
$this->assertNoViolation();
764+
765+
$this->em->persist($entity1);
766+
$this->em->flush();
767+
768+
$this->validator->validate($entity1, $constraint);
769+
770+
$this->assertNoViolation();
771+
772+
$this->validator->validate($entity2, $constraint);
773+
774+
$this->buildViolation('myMessage')
775+
->atPath('property.path.name')
776+
->setParameter('{{ value }}', '"Foo"')
777+
->setInvalidValue($entity2)
778+
->setCause([$entity1])
733779
->setCode(UniqueEntity::NOT_UNIQUE_ERROR)
734780
->assertRaised();
735781
}

src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ public function validate($entity, Constraint $constraint)
171171
->setParameter('{{ value }}', $this->formatWithIdentifiers($em, $class, $invalidValue))
172172
->setInvalidValue($invalidValue)
173173
->setCode(UniqueEntity::NOT_UNIQUE_ERROR)
174+
->setCause($result)
174175
->addViolation();
175176
}
176177

0 commit comments

Comments
 (0)