[Validator] fixed usage of deprecate Validator features
This commit is contained in:
parent
91606b55b5
commit
fb3f9d2d1c
@ -44,7 +44,11 @@ class DeprecationErrorHandler
|
||||
$class = isset($trace[$i]['object']) ? get_class($trace[$i]['object']) : $trace[$i]['class'];
|
||||
$method = $trace[$i]['function'];
|
||||
|
||||
$type = 0 === strpos($method, 'testLegacy') || 0 === strpos($method, 'provideLegacy') || strpos($class, '\Legacy') ? 'legacy' : 'remaining';
|
||||
$type =
|
||||
0 === strpos($method, 'testLegacy')
|
||||
|| 0 === strpos($method, 'provideLegacy')
|
||||
|| strpos($class, '\Legacy')
|
||||
? 'legacy' : 'remaining';
|
||||
|
||||
if ('legacy' === $type && 0 === (error_reporting() & E_USER_DEPRECATED)) {
|
||||
@++$deprecations[$type]['Silenced']['count'];
|
||||
|
@ -47,12 +47,15 @@ class Callback extends Constraint
|
||||
$options = $options['value'];
|
||||
}
|
||||
|
||||
if (is_array($options) && isset($options['methods'])) {
|
||||
trigger_error('The "methods" option of the '.__CLASS__.' class is deprecated since version 2.4 and will be removed in 3.0. Use the "callback" option instead.', E_USER_DEPRECATED);
|
||||
}
|
||||
|
||||
if (is_array($options) && !isset($options['callback']) && !isset($options['methods']) && !isset($options['groups'])) {
|
||||
if (is_callable($options)) {
|
||||
if (is_callable($options) || !$options) {
|
||||
$options = array('callback' => $options);
|
||||
} else {
|
||||
// BC with Symfony < 2.4
|
||||
trigger_error('The "methods" option of the '.__CLASS__.' class is deprecated since version 2.4 and will be removed in 3.0. Use the "callback" option instead.', E_USER_DEPRECATED);
|
||||
// @deprecated, to be removed in 3.0
|
||||
$options = array('methods' => $options);
|
||||
}
|
||||
}
|
||||
|
@ -138,7 +138,7 @@ class ClassMetadata extends ElementMetadata implements ClassMetadataInterface
|
||||
if (null === $propagatedGroup && Constraint::DEFAULT_GROUP === $group
|
||||
&& ($this->hasGroupSequence() || $this->isGroupSequenceProvider())) {
|
||||
if ($this->hasGroupSequence()) {
|
||||
$groups = $this->getGroupSequence();
|
||||
$groups = $this->getGroupSequence()->groups;
|
||||
} else {
|
||||
$groups = $value->getGroupSequence();
|
||||
}
|
||||
@ -479,7 +479,7 @@ class ClassMetadata extends ElementMetadata implements ClassMetadataInterface
|
||||
*/
|
||||
public function hasGroupSequence()
|
||||
{
|
||||
return count($this->groupSequence) > 0;
|
||||
return $this->groupSequence && count($this->groupSequence->groups) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -58,7 +58,7 @@ class CallbackValidatorTest extends AbstractConstraintValidatorTest
|
||||
|
||||
public function testNullIsValid()
|
||||
{
|
||||
$this->validator->validate(null, new Callback(array('foo')));
|
||||
$this->validator->validate(null, new Callback());
|
||||
|
||||
$this->assertNoViolation();
|
||||
}
|
||||
@ -186,7 +186,7 @@ class CallbackValidatorTest extends AbstractConstraintValidatorTest
|
||||
}
|
||||
|
||||
// BC with Symfony < 2.4
|
||||
public function testSingleMethodBc()
|
||||
public function testLegacySingleMethodBc()
|
||||
{
|
||||
$object = new CallbackValidatorTest_Object();
|
||||
$constraint = new Callback(array('validate'));
|
||||
@ -199,7 +199,7 @@ class CallbackValidatorTest extends AbstractConstraintValidatorTest
|
||||
}
|
||||
|
||||
// BC with Symfony < 2.4
|
||||
public function testSingleMethodBcExplicitName()
|
||||
public function testLegacySingleMethodBcExplicitName()
|
||||
{
|
||||
$object = new CallbackValidatorTest_Object();
|
||||
$constraint = new Callback(array('methods' => array('validate')));
|
||||
@ -212,7 +212,7 @@ class CallbackValidatorTest extends AbstractConstraintValidatorTest
|
||||
}
|
||||
|
||||
// BC with Symfony < 2.4
|
||||
public function testMultipleMethodsBc()
|
||||
public function testLegacyMultipleMethodsBc()
|
||||
{
|
||||
$object = new CallbackValidatorTest_Object();
|
||||
$constraint = new Callback(array('validate', 'validateStatic'));
|
||||
@ -227,7 +227,7 @@ class CallbackValidatorTest extends AbstractConstraintValidatorTest
|
||||
}
|
||||
|
||||
// BC with Symfony < 2.4
|
||||
public function testMultipleMethodsBcExplicitName()
|
||||
public function testLegacyMultipleMethodsBcExplicitName()
|
||||
{
|
||||
$object = new CallbackValidatorTest_Object();
|
||||
$constraint = new Callback(array(
|
||||
@ -244,7 +244,7 @@ class CallbackValidatorTest extends AbstractConstraintValidatorTest
|
||||
}
|
||||
|
||||
// BC with Symfony < 2.4
|
||||
public function testSingleStaticMethodBc()
|
||||
public function testLegacySingleStaticMethodBc()
|
||||
{
|
||||
$object = new CallbackValidatorTest_Object();
|
||||
$constraint = new Callback(array(
|
||||
@ -259,7 +259,7 @@ class CallbackValidatorTest extends AbstractConstraintValidatorTest
|
||||
}
|
||||
|
||||
// BC with Symfony < 2.4
|
||||
public function testSingleStaticMethodBcExplicitName()
|
||||
public function testLegacySingleStaticMethodBcExplicitName()
|
||||
{
|
||||
$object = new CallbackValidatorTest_Object();
|
||||
$constraint = new Callback(array(
|
||||
@ -296,7 +296,7 @@ class CallbackValidatorTest extends AbstractConstraintValidatorTest
|
||||
/**
|
||||
* @expectedException \Symfony\Component\Validator\Exception\ConstraintDefinitionException
|
||||
*/
|
||||
public function testExpectEitherCallbackOrMethods()
|
||||
public function testLegacyExpectEitherCallbackOrMethods()
|
||||
{
|
||||
$object = new CallbackValidatorTest_Object();
|
||||
|
||||
@ -308,7 +308,7 @@ class CallbackValidatorTest extends AbstractConstraintValidatorTest
|
||||
|
||||
public function testConstraintGetTargets()
|
||||
{
|
||||
$constraint = new Callback(array('foo'));
|
||||
$constraint = new Callback(array());
|
||||
$targets = array(Constraint::CLASS_CONSTRAINT, Constraint::PROPERTY_CONSTRAINT);
|
||||
|
||||
$this->assertEquals($targets, $constraint->getTargets());
|
||||
|
@ -32,22 +32,28 @@ class GroupSequenceTest extends \PHPUnit_Framework_TestCase
|
||||
$this->assertSame(array('Group 1', 'Group 2'), $sequence->groups);
|
||||
}
|
||||
|
||||
public function testIterate()
|
||||
public function testLegacyIterate()
|
||||
{
|
||||
$this->iniSet('error_reporting', -1 & ~E_USER_DEPRECATED);
|
||||
|
||||
$sequence = new GroupSequence(array('Group 1', 'Group 2'));
|
||||
|
||||
$this->assertSame(array('Group 1', 'Group 2'), iterator_to_array($sequence));
|
||||
}
|
||||
|
||||
public function testCount()
|
||||
public function testLegacyCount()
|
||||
{
|
||||
$this->iniSet('error_reporting', -1 & ~E_USER_DEPRECATED);
|
||||
|
||||
$sequence = new GroupSequence(array('Group 1', 'Group 2'));
|
||||
|
||||
$this->assertCount(2, $sequence);
|
||||
}
|
||||
|
||||
public function testArrayAccess()
|
||||
public function testLegacyArrayAccess()
|
||||
{
|
||||
$this->iniSet('error_reporting', -1 & ~E_USER_DEPRECATED);
|
||||
|
||||
$sequence = new GroupSequence(array('Group 1', 'Group 2'));
|
||||
|
||||
$this->assertSame('Group 1', $sequence[0]);
|
||||
@ -67,15 +73,19 @@ class GroupSequenceTest extends \PHPUnit_Framework_TestCase
|
||||
/**
|
||||
* @expectedException \Symfony\Component\Validator\Exception\OutOfBoundsException
|
||||
*/
|
||||
public function testGetExpectsExistingKey()
|
||||
public function testLegacyGetExpectsExistingKey()
|
||||
{
|
||||
$this->iniSet('error_reporting', -1 & ~E_USER_DEPRECATED);
|
||||
|
||||
$sequence = new GroupSequence(array('Group 1', 'Group 2'));
|
||||
|
||||
$sequence[2];
|
||||
}
|
||||
|
||||
public function testUnsetIgnoresNonExistingKeys()
|
||||
public function testLegacyUnsetIgnoresNonExistingKeys()
|
||||
{
|
||||
$this->iniSet('error_reporting', -1 & ~E_USER_DEPRECATED);
|
||||
|
||||
$sequence = new GroupSequence(array('Group 1', 'Group 2'));
|
||||
|
||||
// should not fail
|
||||
|
@ -19,7 +19,7 @@ use Symfony\Component\Validator\Tests\Fixtures\Entity;
|
||||
use Symfony\Component\Validator\Tests\Validator\AbstractLegacyApiTest;
|
||||
use Symfony\Component\Validator\Validator as LegacyValidator;
|
||||
|
||||
class ValidatorTest extends AbstractLegacyApiTest
|
||||
class LegacyValidatorTest extends AbstractLegacyApiTest
|
||||
{
|
||||
protected function createValidator(MetadataFactoryInterface $metadataFactory, array $objectInitializers = array())
|
||||
{
|
@ -72,16 +72,16 @@ class MemberMetadataTest extends \PHPUnit_Framework_TestCase
|
||||
|
||||
public function testSerializeCollectionCascaded()
|
||||
{
|
||||
$this->metadata->addConstraint(new Valid(array('traverse' => true, 'deep' => false)));
|
||||
$this->metadata->addConstraint(new Valid(array('traverse' => true)));
|
||||
|
||||
$metadata = unserialize(serialize($this->metadata));
|
||||
|
||||
$this->assertEquals($this->metadata, $metadata);
|
||||
}
|
||||
|
||||
public function testSerializeCollectionCascadedDeeply()
|
||||
public function testLegacySerializeCollectionCascadedDeeply()
|
||||
{
|
||||
$this->metadata->addConstraint(new Valid(array('traverse' => true, 'deep' => true)));
|
||||
$this->metadata->addConstraint(new Valid(array('traverse' => true)));
|
||||
|
||||
$metadata = unserialize(serialize($this->metadata));
|
||||
|
||||
|
@ -506,65 +506,6 @@ abstract class Abstract2Dot5ApiTest extends AbstractValidatorTest
|
||||
$this->assertCount(0, $violations);
|
||||
}
|
||||
|
||||
public function testReferenceTraversalRecursionEnabledOnReferenceTraversalEnabledOnClass()
|
||||
{
|
||||
$entity = new Entity();
|
||||
$entity->reference = new \ArrayIterator(array(
|
||||
2 => new \ArrayIterator(array('key' => new Reference())),
|
||||
));
|
||||
|
||||
$callback = function ($value, ExecutionContextInterface $context) {
|
||||
$context->addViolation('Message');
|
||||
};
|
||||
|
||||
$traversableMetadata = new ClassMetadata('ArrayIterator');
|
||||
$traversableMetadata->addConstraint(new Traverse(true));
|
||||
|
||||
$this->metadataFactory->addMetadata($traversableMetadata);
|
||||
$this->referenceMetadata->addConstraint(new Callback(array(
|
||||
'callback' => $callback,
|
||||
'groups' => 'Group',
|
||||
)));
|
||||
$this->metadata->addPropertyConstraint('reference', new Valid(array(
|
||||
'deep' => true,
|
||||
)));
|
||||
|
||||
$violations = $this->validate($entity, new Valid(), 'Group');
|
||||
|
||||
/** @var ConstraintViolationInterface[] $violations */
|
||||
$this->assertCount(1, $violations);
|
||||
}
|
||||
|
||||
public function testReferenceTraversalRecursionDisabledOnReferenceTraversalEnabledOnClass()
|
||||
{
|
||||
$test = $this;
|
||||
$entity = new Entity();
|
||||
$entity->reference = new \ArrayIterator(array(
|
||||
2 => new \ArrayIterator(array('key' => new Reference())),
|
||||
));
|
||||
|
||||
$callback = function ($value, ExecutionContextInterface $context) use ($test) {
|
||||
$test->fail('Should not be called');
|
||||
};
|
||||
|
||||
$traversableMetadata = new ClassMetadata('ArrayIterator');
|
||||
$traversableMetadata->addConstraint(new Traverse(true));
|
||||
|
||||
$this->metadataFactory->addMetadata($traversableMetadata);
|
||||
$this->referenceMetadata->addConstraint(new Callback(array(
|
||||
'callback' => $callback,
|
||||
'groups' => 'Group',
|
||||
)));
|
||||
$this->metadata->addPropertyConstraint('reference', new Valid(array(
|
||||
'deep' => false,
|
||||
)));
|
||||
|
||||
$violations = $this->validate($entity, new Valid(), 'Group');
|
||||
|
||||
/** @var ConstraintViolationInterface[] $violations */
|
||||
$this->assertCount(0, $violations);
|
||||
}
|
||||
|
||||
public function testAddCustomizedViolation()
|
||||
{
|
||||
$entity = new Entity();
|
||||
|
@ -766,7 +766,7 @@ abstract class AbstractValidatorTest extends \PHPUnit_Framework_TestCase
|
||||
};
|
||||
|
||||
$this->metadata->addPropertyConstraint('reference', new Valid(array(
|
||||
'deep' => true,
|
||||
'traverse' => true,
|
||||
)));
|
||||
$this->referenceMetadata->addConstraint(new Callback(array(
|
||||
'callback' => $callback,
|
||||
|
Reference in New Issue
Block a user