1<?php
2
3/*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12namespace Symfony\Component\Form\Tests\Extension\Validator;
13
14use PHPUnit\Framework\TestCase;
15use Symfony\Component\Form\Extension\Validator\Constraints\Form as FormConstraint;
16use Symfony\Component\Form\Extension\Validator\ValidatorExtension;
17use Symfony\Component\Form\Extension\Validator\ValidatorTypeGuesser;
18use Symfony\Component\Form\Form;
19use Symfony\Component\Validator\Mapping\CascadingStrategy;
20use Symfony\Component\Validator\Mapping\ClassMetadata;
21use Symfony\Component\Validator\Mapping\TraversalStrategy;
22use Symfony\Component\Validator\Tests\Fixtures\FakeMetadataFactory;
23use Symfony\Component\Validator\Validation;
24
25class ValidatorExtensionTest extends TestCase
26{
27    public function test2Dot5ValidationApi()
28    {
29        $metadata = new ClassMetadata(Form::class);
30
31        $metadataFactory = new FakeMetadataFactory();
32        $metadataFactory->addMetadata($metadata);
33
34        $validator = Validation::createValidatorBuilder()
35            ->setMetadataFactory($metadataFactory)
36            ->getValidator();
37
38        $extension = new ValidatorExtension($validator);
39
40        $this->assertInstanceOf(ValidatorTypeGuesser::class, $extension->loadTypeGuesser());
41
42        $this->assertCount(1, $metadata->getConstraints());
43        $this->assertInstanceOf(FormConstraint::class, $metadata->getConstraints()[0]);
44
45        $this->assertSame(CascadingStrategy::NONE, $metadata->cascadingStrategy);
46        $this->assertSame(TraversalStrategy::NONE, $metadata->traversalStrategy);
47        $this->assertCount(0, $metadata->getPropertyMetadata('children'));
48    }
49}
50