[Validator] Refactor tests

This commit is contained in:
Jáchym Toušek 2016-09-19 21:10:04 +02:00
parent 38b643a9f0
commit 3847badd47

View File

@ -1157,9 +1157,11 @@ abstract class AbstractValidatorTest extends \PHPUnit_Framework_TestCase
$this->assertSame('Violation in other group', $violations[0]->getMessage());
}
public function testReplaceDefaultGroupWithObjectFromGroupSequenceProvider()
/**
* @dataProvider getTestReplaceDefaultGroup
*/
public function testReplaceDefaultGroup($sequence, array $assertViolations)
{
$sequence = new GroupSequence(array('Group 1', 'Group 2', 'Group 3', 'Entity'));
$entity = new GroupSequenceProviderEntity($sequence);
$callback1 = function ($value, ExecutionContextInterface $context) {
@ -1189,43 +1191,27 @@ abstract class AbstractValidatorTest extends \PHPUnit_Framework_TestCase
$violations = $this->validate($entity, null, 'Default');
/* @var ConstraintViolationInterface[] $violations */
$this->assertCount(1, $violations);
$this->assertSame('Violation in Group 2', $violations[0]->getMessage());
$this->assertCount(count($assertViolations), $violations);
foreach ($assertViolations as $key => $message) {
$this->assertSame($message, $violations[$key]->getMessage());
}
}
public function testReplaceDefaultGroupWithArrayFromGroupSequenceProvider()
public function getTestReplaceDefaultGroup()
{
$sequence = array('Group 1', 'Group 2', 'Group 3', 'Entity');
$entity = new GroupSequenceProviderEntity($sequence);
$callback1 = function ($value, ExecutionContextInterface $context) {
$context->addViolation('Violation in Group 2');
};
$callback2 = function ($value, ExecutionContextInterface $context) {
$context->addViolation('Violation in Group 3');
};
$metadata = new ClassMetadata(get_class($entity));
$metadata->addConstraint(new Callback(array(
'callback' => function () {},
'groups' => 'Group 1',
)));
$metadata->addConstraint(new Callback(array(
'callback' => $callback1,
'groups' => 'Group 2',
)));
$metadata->addConstraint(new Callback(array(
'callback' => $callback2,
'groups' => 'Group 3',
)));
$metadata->setGroupSequenceProvider(true);
$this->metadataFactory->addMetadata($metadata);
$violations = $this->validate($entity, null, 'Default');
/* @var ConstraintViolationInterface[] $violations */
$this->assertCount(1, $violations);
$this->assertSame('Violation in Group 2', $violations[0]->getMessage());
return array(
array(
'sequence' => new GroupSequence(array('Group 1', 'Group 2', 'Group 3', 'Entity')),
'assertViolations' => array(
'Violation in Group 2',
),
),
array(
'sequence' => array('Group 1', 'Group 2', 'Group 3', 'Entity'),
'assertViolations' => array(
'Violation in Group 2',
),
),
);
}
}