Skip to content

Commit

Permalink
[Validator] Fixed Constraint class to not destroy custom groups upon …
Browse files Browse the repository at this point in the history
…serialization
  • Loading branch information
webmozart committed Aug 18, 2014
1 parent 0cc47b4 commit a085366
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 7 deletions.
2 changes: 1 addition & 1 deletion Constraint.php
Expand Up @@ -274,7 +274,7 @@ public function getTargets()
public function __sleep()
{
// Initialize "groups" option if it is not set
$this->__get('groups');
$this->groups;

return array_keys(get_object_vars($this));
}
Expand Down
24 changes: 18 additions & 6 deletions Tests/ConstraintTest.php
Expand Up @@ -167,22 +167,34 @@ public function testSerialize()
$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);
}
}

0 comments on commit a085366

Please sign in to comment.