diff --git a/src/Symfony/Component/Validator/Constraint.php b/src/Symfony/Component/Validator/Constraint.php index fa6b4b4d26..372308ed48 100644 --- a/src/Symfony/Component/Validator/Constraint.php +++ b/src/Symfony/Component/Validator/Constraint.php @@ -274,7 +274,7 @@ abstract class Constraint public function __sleep() { // Initialize "groups" option if it is not set - $this->__get('groups'); + $this->groups; return array_keys(get_object_vars($this)); } diff --git a/src/Symfony/Component/Validator/Tests/ConstraintTest.php b/src/Symfony/Component/Validator/Tests/ConstraintTest.php index 6ccf661fa8..45b9b75c0f 100644 --- a/src/Symfony/Component/Validator/Tests/ConstraintTest.php +++ b/src/Symfony/Component/Validator/Tests/ConstraintTest.php @@ -167,22 +167,34 @@ class ConstraintTest extends \PHPUnit_Framework_TestCase $this->assertEquals($constraint, $restoredConstraint); } - public function testSerializeInitializesGroupsOption() + public function testSerializeInitializesGroupsOptionToDefault() { - $constraintWithExplicitGroup = new ConstraintA(array( + $constraint = new ConstraintA(array( + 'property1' => 'foo', + 'property2' => 'bar', + )); + + $constraint = unserialize(serialize($constraint)); + + $expected = new ConstraintA(array( 'property1' => 'foo', 'property2' => 'bar', 'groups' => 'Default', )); - $constraintWithoutExplicitGroup = new ConstraintA(array( + $this->assertEquals($expected, $constraint); + } + + public function testSerializeKeepsCustomGroups() + { + $constraint = new ConstraintA(array( 'property1' => 'foo', 'property2' => 'bar', + 'groups' => 'MyGroup', )); - $constraintWithExplicitGroup = unserialize(serialize($constraintWithExplicitGroup)); - $constraintWithoutExplicitGroup = unserialize(serialize($constraintWithoutExplicitGroup)); + $constraint = unserialize(serialize($constraint)); - $this->assertEquals($constraintWithExplicitGroup, $constraintWithoutExplicitGroup); + $this->assertSame(array('MyGroup'), $constraint->groups); } }