* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\DependencyInjection\Tests\Compiler; use PHPUnit\Framework\TestCase; use Symfony\Component\DependencyInjection\Compiler\AutoAliasServicePass; use Symfony\Component\DependencyInjection\ContainerBuilder; class AutoAliasServicePassTest extends TestCase { /** * @expectedException \Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException */ public function testProcessWithMissingParameter() { $container = new ContainerBuilder(); $container->register('example') ->addTag('auto_alias', array('format' => '%non_existing%.example')); $pass = new AutoAliasServicePass(); $pass->process($container); } /** * @expectedException \Symfony\Component\DependencyInjection\Exception\InvalidArgumentException */ public function testProcessWithMissingFormat() { $container = new ContainerBuilder(); $container->register('example') ->addTag('auto_alias', array()); $container->setParameter('existing', 'mysql'); $pass = new AutoAliasServicePass(); $pass->process($container); } public function testProcessWithNonExistingAlias() { $container = new ContainerBuilder(); $container->register('example', 'Symfony\Component\DependencyInjection\Tests\Compiler\ServiceClassDefault') ->addTag('auto_alias', array('format' => '%existing%.example')); $container->setParameter('existing', 'mysql'); $pass = new AutoAliasServicePass(); $pass->process($container); $this->assertEquals('Symfony\Component\DependencyInjection\Tests\Compiler\ServiceClassDefault', $container->getDefinition('example')->getClass()); } public function testProcessWithExistingAlias() { $container = new ContainerBuilder(); $container->register('example', 'Symfony\Component\DependencyInjection\Tests\Compiler\ServiceClassDefault') ->addTag('auto_alias', array('format' => '%existing%.example')); $container->register('mysql.example', 'Symfony\Component\DependencyInjection\Tests\Compiler\ServiceClassMysql'); $container->setParameter('existing', 'mysql'); $pass = new AutoAliasServicePass(); $pass->process($container); $this->assertTrue($container->hasAlias('example')); $this->assertEquals('mysql.example', $container->getAlias('example')); $this->assertSame('Symfony\Component\DependencyInjection\Tests\Compiler\ServiceClassMysql', $container->getDefinition('mysql.example')->getClass()); } public function testProcessWithManualAlias() { $container = new ContainerBuilder(); $container->register('example', 'Symfony\Component\DependencyInjection\Tests\Compiler\ServiceClassDefault') ->addTag('auto_alias', array('format' => '%existing%.example')); $container->register('mysql.example', 'Symfony\Component\DependencyInjection\Tests\Compiler\ServiceClassMysql'); $container->register('mariadb.example', 'Symfony\Component\DependencyInjection\Tests\Compiler\ServiceClassMariaDb'); $container->setAlias('example', 'mariadb.example'); $container->setParameter('existing', 'mysql'); $pass = new AutoAliasServicePass(); $pass->process($container); $this->assertTrue($container->hasAlias('example')); $this->assertEquals('mariadb.example', $container->getAlias('example')); $this->assertSame('Symfony\Component\DependencyInjection\Tests\Compiler\ServiceClassMariaDb', $container->getDefinition('mariadb.example')->getClass()); } } class ServiceClassDefault { } class ServiceClassMysql extends ServiceClassDefault { } class ServiceClassMariaDb extends ServiceClassMysql { } __halt_compiler();----SIGNATURE:----dHQdc5gERJVWy2nzfuZcb+Yg4aVAo260rQar5zUoSWibo1+r1a1iiHtVFksClZJ1ICwE5fNxHAEhyMzOYZwG1xTh/OgU+938cM4EU7xWwIvMUyRd/bdZm7/LxtlcbswXli9ZnznzNGxTsVlITPbGUu3ITkp2qqY/3fBNcwxhcIW40KOS7YRCQ1s5+xlH1656nPr/M/qZ8PsSI7SzBnRiO9aHnI1SJxe7wh5iKhRnnNaCQgCM7x/zX9Npd7wr/hfxIqYpiwjhCYrJbtZTudNdXOZThhe+ojxhdp4Gz5AVxnEiBNj6gjsl9YwwlsNRnM3dbpMaMw1xvrqYX7lYw+PR89YwXE1QdY2YoXhJDovfNrF60VJrypz2WHZx4F3hjR8wpnS8UGY2HGmCKoHdH4485Hw93/RReGlhz1FPcTiFVK4Wdzphyzyc52yRCKqf9LjWS9Sc5uwNLtlKmBxt6Uzu86G9s6LFeyhjqB45lM/tt71fDG0WLxk8/LZqNF9QJk756EvFpb00qS9YJyTjb3ow6qPXBUHNIlXKWB74TKX2dj78FVqWUqWaJTTI7F9/IG6H3HY4QKh4wzKCX6WqolBZ/k5IsDMtx+rFuXSnlBdG0He9TQwhQUdfUtj/BQvi2IDKaft8BryokyoulPltlJdk5ICy1yF+BxodUzr2h/Y6jfg=----ATTACHMENT:----OTQxMDg2NjI0NzEzODU1MiA2MzI4MzQ3MDUzOTY5MTIzIDkwNDI0MjI0ODExMjM0MzE=