* * 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:----IYOE5HXbWD9JGrtftEbccQKxl5HdweCLhkVGWpvUXPrNraZPNfVY0UkXpPsI//EXY0PdknvGKbovaXYTC9pqxD/4zSEmS+1KCmS5kz/bvrsbX2YQQHYuKDiiK31Cn64rwNOMc11o3t+y1QF0mAE3HjfPSl2f6aVEqbGrtB3c8bz5T/P8w9DEnAhNGSV9Pp9/X038xNqX7fg2EO0nlBg4jRrzmjPU6+PkXc6MLVZm6gZ4+GtoV3PCYFaA1iZ0fygiICLLZqL8pJ7o/SlBUW2swU+rXesvvYB5GRzSUNRHZA9r5cMZyGGmvfQa1viL/znQXFUAzT5B0fQHakX8o0Pe33lKktkrbt9PGiz+rczJDFIvlOBoI4umwuMChD4bB5MCcCj3vf4hi7kYa+S5Rb7TJ3KSucX+xJVBmJhlvY7LQdHWNnXQxmPKrOc49xDbc7ORfAzX+CKKqLzlMkQQAB02qcUzoMkYN/JHYoZFx/Xf8I/LfBuoU+fGG1NzGKiC7p3SpY+KMBsN0DnDhG8rkjoS5XnKT4XPTR6LLtJHgUeJzv/kMj9kJE8CzrPX7tJ7tMV+OXvv1RhEOX5uW4t9dzhGuDj+y3X5IElh+lpRK8iLKrgQaIF0N7kkTNRXhfGkh+fy+0wx9soIJjH/1BL2YnJRbOv4HX0Yn2VHDJhmTXPGnOY=----ATTACHMENT:----MzU4NjQxMjEzNDkwNjk5NSAyMDg5NjI0Mjg2NDMxMTg4IDY2MDc5NzMyNjI4NzUxNTg=