From a266ff799c7f05b79133c9b5482e82b900b9a8bb Mon Sep 17 00:00:00 2001 From: po_taka Date: Sun, 5 Feb 2017 19:55:20 +0200 Subject: [PATCH 1/2] added test for staticClassLoader in LazyLoadingMetadatafactory --- .../Tests/Fixtures/EntityStaticCar.php | 23 +++++++++++++++++ .../Tests/Fixtures/EntityStaticCarTurbo.php | 23 +++++++++++++++++ .../Tests/Fixtures/EntityStaticVehicle.php | 25 +++++++++++++++++++ .../LazyLoadingMetadataFactoryTest.php | 15 +++++++++++ 4 files changed, 86 insertions(+) create mode 100644 src/Symfony/Component/Validator/Tests/Fixtures/EntityStaticCar.php create mode 100644 src/Symfony/Component/Validator/Tests/Fixtures/EntityStaticCarTurbo.php create mode 100644 src/Symfony/Component/Validator/Tests/Fixtures/EntityStaticVehicle.php diff --git a/src/Symfony/Component/Validator/Tests/Fixtures/EntityStaticCar.php b/src/Symfony/Component/Validator/Tests/Fixtures/EntityStaticCar.php new file mode 100644 index 0000000000000..38c82982b1436 --- /dev/null +++ b/src/Symfony/Component/Validator/Tests/Fixtures/EntityStaticCar.php @@ -0,0 +1,23 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Validator\Tests\Fixtures; + +use Symfony\Component\Validator\Mapping\ClassMetadata; +use Symfony\Component\Validator\Constraints\Length; + +class EntityStaticCar extends EntityStaticVehicle +{ + public static function loadValidatorMetadata(ClassMetadata $metadata) + { + $metadata->addPropertyConstraint('wheels', new Length(array('max' => 99))); + } +} diff --git a/src/Symfony/Component/Validator/Tests/Fixtures/EntityStaticCarTurbo.php b/src/Symfony/Component/Validator/Tests/Fixtures/EntityStaticCarTurbo.php new file mode 100644 index 0000000000000..83f192e7bd00d --- /dev/null +++ b/src/Symfony/Component/Validator/Tests/Fixtures/EntityStaticCarTurbo.php @@ -0,0 +1,23 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Validator\Tests\Fixtures; + +use Symfony\Component\Validator\Mapping\ClassMetadata; +use Symfony\Component\Validator\Constraints\Length; + +class EntityStaticCarTurbo extends EntityStaticCar +{ + public static function loadValidatorMetadata(ClassMetadata $metadata) + { + $metadata->addPropertyConstraint('wheels', new Length(array('max' => 99))); + } +} diff --git a/src/Symfony/Component/Validator/Tests/Fixtures/EntityStaticVehicle.php b/src/Symfony/Component/Validator/Tests/Fixtures/EntityStaticVehicle.php new file mode 100644 index 0000000000000..41e616b03f433 --- /dev/null +++ b/src/Symfony/Component/Validator/Tests/Fixtures/EntityStaticVehicle.php @@ -0,0 +1,25 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Validator\Tests\Fixtures; + +use Symfony\Component\Validator\Mapping\ClassMetadata; +use Symfony\Component\Validator\Constraints\Length; + +class EntityStaticVehicle +{ + public $wheels; + + public static function loadValidatorMetadata(ClassMetadata $metadata) + { + $metadata->addPropertyConstraint('wheels', new Length(array('max' => 99))); + } +} diff --git a/src/Symfony/Component/Validator/Tests/Mapping/Factory/LazyLoadingMetadataFactoryTest.php b/src/Symfony/Component/Validator/Tests/Mapping/Factory/LazyLoadingMetadataFactoryTest.php index 9696744166537..9539008b2659c 100644 --- a/src/Symfony/Component/Validator/Tests/Mapping/Factory/LazyLoadingMetadataFactoryTest.php +++ b/src/Symfony/Component/Validator/Tests/Mapping/Factory/LazyLoadingMetadataFactoryTest.php @@ -168,6 +168,21 @@ public function testMetadataCacheWithRuntimeConstraint() $metadata = $factory->getMetadataFor(self::CLASS_NAME); } + + public function testGroupsFromParent() + { + $reader = new \Symfony\Component\Validator\Mapping\Loader\StaticMethodLoader(); + $factory = new LazyLoadingMetadataFactory($reader); + $metadata = $factory->getMetadataFor('Symfony\Component\Validator\Tests\Fixtures\EntityStaticCarTurbo'); + $classMetaData = $metadata->getPropertyMetadata('wheels'); + $constraints = $classMetaData[0]->getConstraints(); + $groups = $constraints[0]->groups; + + $this->assertContains('Default', $groups); + $this->assertContains('EntityStaticCarTurbo', $groups); + $this->assertContains('EntityStaticCar', $groups); + $this->assertContains('EntityStaticVehicle', $groups); + } } class TestLoader implements LoaderInterface From 9513a8aa526ba3818667900e5dda355f1d3053b0 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Fri, 10 Feb 2017 19:31:41 +0100 Subject: [PATCH 2/2] property constraints can be added in child classes --- .../Validator/Mapping/ClassMetadata.php | 4 ---- .../Tests/Mapping/ClassMetadataTest.php | 16 ---------------- .../Factory/LazyLoadingMetadataFactoryTest.php | 10 +++++++--- 3 files changed, 7 insertions(+), 23 deletions(-) diff --git a/src/Symfony/Component/Validator/Mapping/ClassMetadata.php b/src/Symfony/Component/Validator/Mapping/ClassMetadata.php index dc825e1fa9c2f..9c305e998cab9 100644 --- a/src/Symfony/Component/Validator/Mapping/ClassMetadata.php +++ b/src/Symfony/Component/Validator/Mapping/ClassMetadata.php @@ -346,10 +346,6 @@ public function mergeConstraints(ClassMetadata $source) } foreach ($source->getConstrainedProperties() as $property) { - if ($this->hasPropertyMetadata($property)) { - continue; - } - foreach ($source->getPropertyMetadata($property) as $member) { $member = clone $member; diff --git a/src/Symfony/Component/Validator/Tests/Mapping/ClassMetadataTest.php b/src/Symfony/Component/Validator/Tests/Mapping/ClassMetadataTest.php index 99b15aa9a4cc8..51b5a09802fe8 100644 --- a/src/Symfony/Component/Validator/Tests/Mapping/ClassMetadataTest.php +++ b/src/Symfony/Component/Validator/Tests/Mapping/ClassMetadataTest.php @@ -12,7 +12,6 @@ namespace Symfony\Component\Validator\Tests\Mapping; use Symfony\Component\Validator\Constraint; -use Symfony\Component\Validator\Constraints\GreaterThan; use Symfony\Component\Validator\Constraints\Valid; use Symfony\Component\Validator\Mapping\ClassMetadata; use Symfony\Component\Validator\Tests\Fixtures\ConstraintA; @@ -304,21 +303,6 @@ public function testGetPropertyMetadataReturnsEmptyArrayWithoutConfiguredMetadat { $this->assertCount(0, $this->metadata->getPropertyMetadata('foo'), '->getPropertyMetadata() returns an empty collection if no metadata is configured for the given property'); } - - public function testMergeDoesOverrideConstraintsFromParentClassIfPropertyIsOverriddenInChildClass() - { - $parentMetadata = new ClassMetadata('\Symfony\Component\Validator\Tests\Mapping\ParentClass'); - $parentMetadata->addPropertyConstraint('example', new GreaterThan(0)); - - $childMetadata = new ClassMetadata('\Symfony\Component\Validator\Tests\Mapping\ChildClass'); - $childMetadata->addPropertyConstraint('example', new GreaterThan(1)); - $childMetadata->mergeConstraints($parentMetadata); - - $expectedMetadata = new ClassMetadata('\Symfony\Component\Validator\Tests\Mapping\ChildClass'); - $expectedMetadata->addPropertyConstraint('example', new GreaterThan(1)); - - $this->assertEquals($expectedMetadata, $childMetadata); - } } class ParentClass diff --git a/src/Symfony/Component/Validator/Tests/Mapping/Factory/LazyLoadingMetadataFactoryTest.php b/src/Symfony/Component/Validator/Tests/Mapping/Factory/LazyLoadingMetadataFactoryTest.php index 9539008b2659c..400c39ce4cfa9 100644 --- a/src/Symfony/Component/Validator/Tests/Mapping/Factory/LazyLoadingMetadataFactoryTest.php +++ b/src/Symfony/Component/Validator/Tests/Mapping/Factory/LazyLoadingMetadataFactoryTest.php @@ -174,10 +174,14 @@ public function testGroupsFromParent() $reader = new \Symfony\Component\Validator\Mapping\Loader\StaticMethodLoader(); $factory = new LazyLoadingMetadataFactory($reader); $metadata = $factory->getMetadataFor('Symfony\Component\Validator\Tests\Fixtures\EntityStaticCarTurbo'); - $classMetaData = $metadata->getPropertyMetadata('wheels'); - $constraints = $classMetaData[0]->getConstraints(); - $groups = $constraints[0]->groups; + $groups = array(); + foreach ($metadata->getPropertyMetadata('wheels') as $propertyMetadata) { + $constraints = $propertyMetadata->getConstraints(); + $groups = array_replace($groups, $constraints[0]->groups); + } + + $this->assertCount(4, $groups); $this->assertContains('Default', $groups); $this->assertContains('EntityStaticCarTurbo', $groups); $this->assertContains('EntityStaticCar', $groups); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy