* * 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:----SC5aEvcapVmEvgRrUzWn3zIyaCvOHnuaJnIHsLDqv0isPXTTkECN8fMs/ZLHoJBIq106YS7y6t+G4SQDIL762vLqz6nD8mtMU2Hqqq0CIENs+guKAk6ZRRutP09gv11N7/xKS+SSbEtm8CE16btTrVt76ZtlncMmbYJrjW27Sbz9O4HPmY8cwsSH6/3j6+IboSuo07Lk7z5H3QRrryYlyvMlHKrlTpDSmHiWyCsMrEfDQmg/9EUQGI43+QoH0JJBaiOSOBKtI0TxaDwxxNNe+pGpX9Td8adu+1eCs9HXaBL/GAczAF1+4zfKMPD4kypAMmw9h+svuXxSH7+FbZhqKY+fdHg75fbG3YQIiTIOoGrpJKx/2QXDt1WuTWTvQD8H5zxcBBLbkp9NtKM/KEply3oJ6AnsZ0eWYhAznQEoo7sIAfUphGVAjJFdDmJBJ52NZdtdpSVjyIFbBR1wflj1dMHohtPPAgzNU6qt0rOuAJI5hXl1lUi3GqIBN7fWc1Yt4NQTpREilAVa1cTHtkF8eJ9834oPeSFH5TeQVT0FIjghbVIJu9uy8ZQh7u1BN5WJKXe7Ya2+BlAsjfaTgjB+C/ofTssSgaFuuJoGToproIbQ15TC4H/8KCaUEBGUVs9e+o2nQpAhMRX8bshFuv4Tj8TACiEgmcaCgTXDNg61Dw4=----ATTACHMENT:----NDkwMDI1MzIyMDYxMjU5MSA5NTM2NzYwNzY4NDI1NjU2IDM1NzE1NjY4MDc5OTU5NTY=