* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Validator\Tests\DependencyInjection; use PHPUnit\Framework\TestCase; use Symfony\Component\Validator\DependencyInjection\AddConstraintValidatorsPass; use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\DependencyInjection\ServiceLocator; class AddConstraintValidatorsPassTest extends TestCase { public function testThatConstraintValidatorServicesAreProcessed() { $container = new ContainerBuilder(); $validatorFactory = $container->register('validator.validator_factory') ->addArgument(array()); $container->register('my_constraint_validator_service1', Validator1::class) ->addTag('validator.constraint_validator', array('alias' => 'my_constraint_validator_alias1')); $container->register('my_constraint_validator_service2', Validator2::class) ->addTag('validator.constraint_validator'); $addConstraintValidatorsPass = new AddConstraintValidatorsPass(); $addConstraintValidatorsPass->process($container); $expected = (new Definition(ServiceLocator::class, array(array( Validator1::class => new ServiceClosureArgument(new Reference('my_constraint_validator_service1')), 'my_constraint_validator_alias1' => new ServiceClosureArgument(new Reference('my_constraint_validator_service1')), Validator2::class => new ServiceClosureArgument(new Reference('my_constraint_validator_service2')), ))))->addTag('container.service_locator')->setPublic(false); $this->assertEquals($expected, $container->getDefinition((string) $validatorFactory->getArgument(0))); } /** * @expectedException \InvalidArgumentException * @expectedExceptionMessage The service "my_abstract_constraint_validator" tagged "validator.constraint_validator" must not be abstract. */ public function testAbstractConstraintValidator() { $container = new ContainerBuilder(); $container->register('validator.validator_factory') ->addArgument(array()); $container->register('my_abstract_constraint_validator') ->setAbstract(true) ->addTag('validator.constraint_validator'); $addConstraintValidatorsPass = new AddConstraintValidatorsPass(); $addConstraintValidatorsPass->process($container); } public function testThatCompilerPassIsIgnoredIfThereIsNoConstraintValidatorFactoryDefinition() { $container = new ContainerBuilder(); $definitionsBefore = count($container->getDefinitions()); $aliasesBefore = count($container->getAliases()); $addConstraintValidatorsPass = new AddConstraintValidatorsPass(); $addConstraintValidatorsPass->process($container); // the container is untouched (i.e. no new definitions or aliases) $this->assertCount($definitionsBefore, $container->getDefinitions()); $this->assertCount($aliasesBefore, $container->getAliases()); } } __halt_compiler();----SIGNATURE:----ML6DXP//HnqQ/h8sFUSFfW5b/1SS8qDnkVBbcJT4jtU1sVe2KYWCUYe330GleE9r13LYFwKBrr64wn4UbybNqHEowyion74whq/7DA8xwuBrXfUHZz9p1vrFmJIX8J9iQo1Z3qzQlKYoG8xaP77MEAhmzvL0pMNOvBScXLXkd3/n3sJpJVo323COltfeRiZFdbj3FR7ddImX5hHuMPxa5kEX4SRa5zyi1DjxfdyAUY9l735qfxl4F3AB/BCQcw4L9+ClnuPgZVJA4wn5a81CRw0eL8QwwuAqevVvDUcr8XLPbhwiL2zjPnp07//31NLpGXDAJX2z2KhH3qHx3jGDWGwtv09Js0VivEU9Qu7XGYqxAU6cRkEz6F7i4F6epZ423AVRChbG57z9hQxVIj0CuBnV/q0HPYEgzRGsJ8l6CwceLoKMKwg52dFW0kFKbQoYp1frYS6zxY8Hb/UbB5nugw+ZShz/ww4M1D4LWC6zn7sNGXJnEFzuR3MnHAcw+t5Chm1tqzO7oYsBCINOBkBu9u0YHqf3XFeYEr/s+9UTl+FeWblu129fbcmOwJifV4Uf4I10A2H5KJKNGbRNU3sZTLkAiRsLGkJt12iSc+mxYuaNi+KMJ3E9najwcROgr6qHLDfdLoMW9IesxT59wYdJpr8Q0X5XVLaKwbn4rTWgFUg=----ATTACHMENT:----NDA2ODk5NTc2MzIzMzU3NiA0NTE4MjAwNjIxODIwNjQ0IDQ5NzQ0MzcyMDc1MTA2NDM=