From 0fd6769d2a5662460de44af8d28e0754a2ee81be Mon Sep 17 00:00:00 2001 From: Jakub Zalas Date: Sat, 13 Sep 2014 00:52:47 +0100 Subject: [PATCH] [Validator] Add ClassMetadata plural methods for convinience --- .../Validator/Mapping/ClassMetadata.php | 32 +++++++++++- .../Tests/Mapping/ClassMetadataTest.php | 49 +++++++++++++++++++ 2 files changed, 80 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Validator/Mapping/ClassMetadata.php b/src/Symfony/Component/Validator/Mapping/ClassMetadata.php index 81cc89536d..8b099ebb88 100644 --- a/src/Symfony/Component/Validator/Mapping/ClassMetadata.php +++ b/src/Symfony/Component/Validator/Mapping/ClassMetadata.php @@ -184,7 +184,7 @@ class ClassMetadata extends ElementMetadata implements LegacyMetadataInterface, 'members', 'name', 'properties', - 'defaultGroup' + 'defaultGroup', )); } @@ -278,6 +278,21 @@ class ClassMetadata extends ElementMetadata implements LegacyMetadataInterface, return $this; } + /** + * @param string $property + * @param Constraint[] $constraints + * + * @return ClassMetadata + */ + public function addPropertyConstraints($property, array $constraints) + { + foreach ($constraints as $constraint) { + $this->addPropertyConstraint($property, $constraint); + } + + return $this; + } + /** * Adds a constraint to the getter of the given property. * @@ -304,6 +319,21 @@ class ClassMetadata extends ElementMetadata implements LegacyMetadataInterface, return $this; } + /** + * @param string $property + * @param Constraint[] $constraints + * + * @return ClassMetadata + */ + public function addGetterConstraints($property, array $constraints) + { + foreach ($constraints as $constraint) { + $this->addGetterConstraint($property, $constraint); + } + + return $this; + } + /** * Merges the constraints of the given metadata into this object. * diff --git a/src/Symfony/Component/Validator/Tests/Mapping/ClassMetadataTest.php b/src/Symfony/Component/Validator/Tests/Mapping/ClassMetadataTest.php index b9f6faee5a..308c501f07 100644 --- a/src/Symfony/Component/Validator/Tests/Mapping/ClassMetadataTest.php +++ b/src/Symfony/Component/Validator/Tests/Mapping/ClassMetadataTest.php @@ -58,6 +58,55 @@ class ClassMetadataTest extends \PHPUnit_Framework_TestCase $this->assertEquals(array('firstName', 'lastName'), $this->metadata->getConstrainedProperties()); } + public function testAddMultiplePropertyConstraints() + { + $this->metadata->addPropertyConstraints('lastName', array(new ConstraintA(), new ConstraintB())); + + $constraints = array( + new ConstraintA(array('groups' => array('Default', 'Entity'))), + new ConstraintB(array('groups' => array('Default', 'Entity'))), + ); + + $properties = $this->metadata->getPropertyMetadata('lastName'); + + $this->assertCount(1, $properties); + $this->assertEquals('lastName', $properties[0]->getName()); + $this->assertEquals($constraints, $properties[0]->getConstraints()); + } + + public function testAddGetterConstraints() + { + $this->metadata->addGetterConstraint('lastName', new ConstraintA()); + $this->metadata->addGetterConstraint('lastName', new ConstraintB()); + + $constraints = array( + new ConstraintA(array('groups' => array('Default', 'Entity'))), + new ConstraintB(array('groups' => array('Default', 'Entity'))), + ); + + $properties = $this->metadata->getPropertyMetadata('lastName'); + + $this->assertCount(1, $properties); + $this->assertEquals('getLastName', $properties[0]->getName()); + $this->assertEquals($constraints, $properties[0]->getConstraints()); + } + + public function testAddMultipleGetterConstraints() + { + $this->metadata->addGetterConstraints('lastName', array(new ConstraintA(), new ConstraintB())); + + $constraints = array( + new ConstraintA(array('groups' => array('Default', 'Entity'))), + new ConstraintB(array('groups' => array('Default', 'Entity'))), + ); + + $properties = $this->metadata->getPropertyMetadata('lastName'); + + $this->assertCount(1, $properties); + $this->assertEquals('getLastName', $properties[0]->getName()); + $this->assertEquals($constraints, $properties[0]->getConstraints()); + } + public function testMergeConstraintsMergesClassConstraints() { $parent = new ClassMetadata(self::PARENTCLASS);