4 * This file is part of the Symfony package.
6 * (c) Fabien Potencier <fabien@symfony.com>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Symfony\Component\Validator\Tests\Validator;
14 use Symfony\Component\Translation\IdentityTranslator;
15 use Symfony\Component\Validator\ConstraintValidatorFactory;
16 use Symfony\Component\Validator\Context\ExecutionContextFactory;
17 use Symfony\Component\Validator\Mapping\Factory\MetadataFactoryInterface;
18 use Symfony\Component\Validator\Tests\Constraints\Fixtures\ChildA;
19 use Symfony\Component\Validator\Tests\Constraints\Fixtures\ChildB;
20 use Symfony\Component\Validator\Tests\Fixtures\Entity;
21 use Symfony\Component\Validator\Validator\RecursiveValidator;
23 class RecursiveValidatorTest extends AbstractTest
25 protected function createValidator(MetadataFactoryInterface $metadataFactory, array $objectInitializers = array())
27 $translator = new IdentityTranslator();
28 $translator->setLocale('en');
30 $contextFactory = new ExecutionContextFactory($translator);
31 $validatorFactory = new ConstraintValidatorFactory();
33 return new RecursiveValidator($contextFactory, $metadataFactory, $validatorFactory, $objectInitializers);
36 public function testEmptyGroupsArrayDoesNotTriggerDeprecation()
38 $entity = new Entity();
39 $childA = new ChildA();
40 $childB = new ChildB();
41 $childA->name = false;
42 $childB->name = 'fake';
43 $entity->childA = array($childA);
44 $entity->childB = array($childB);
45 $validatorContext = $this->getMockBuilder('Symfony\Component\Validator\Validator\ContextualValidatorInterface')->getMock();
47 ->expects($this->once())
49 ->with($entity, null, array())
53 ->getMockBuilder('Symfony\Component\Validator\Validator\RecursiveValidator')
54 ->disableOriginalConstructor()
55 ->setMethods(array('startContext'))
58 ->expects($this->once())
59 ->method('startContext')
60 ->willReturn($validatorContext);
62 $validator->validate($entity, null, array());
65 public function testRelationBetweenChildAAndChildB()
67 $entity = new Entity();
68 $childA = new ChildA();
69 $childB = new ChildB();
71 $childA->childB = $childB;
72 $childB->childA = $childA;
74 $childA->name = false;
75 $childB->name = 'fake';
76 $entity->childA = array($childA);
77 $entity->childB = array($childB);
79 $validatorContext = $this->getMockBuilder('Symfony\Component\Validator\Validator\ContextualValidatorInterface')->getMock();
81 ->expects($this->once())
83 ->with($entity, null, array())
87 ->getMockBuilder('Symfony\Component\Validator\Validator\RecursiveValidator')
88 ->disableOriginalConstructor()
89 ->setMethods(array('startContext'))
92 ->expects($this->once())
93 ->method('startContext')
94 ->willReturn($validatorContext);
96 $validator->validate($entity, null, array());