/
githubmirror
/
symfony
Обзор
Документация
Войти
/
githubmirror
/
symfony
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
8.2
src/Symfony/Component/DependencyInjection/Tests/Compiler/AutoAliasServicePassTest.php
114 строк
4 KB
Oskar Stark
[Tests] Move expectException closer to the place of the expectation to avoid false positives
31 окт 2023, 11:40
31 окт 2023, 11:40
6115ab0
Код
Авторство
О чём код?
<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * 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; use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; use Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException; class AutoAliasServicePassTest extends TestCase { public function testProcessWithMissingParameter() { $container = new ContainerBuilder(); $container->register('example') ->addTag('auto_alias', ['format' => '%non_existing%.example']); $pass = new AutoAliasServicePass(); $this->expectException(ParameterNotFoundException::class); $pass->process($container); } public function testProcessWithMissingFormat() { $container = new ContainerBuilder(); $container->register('example') ->addTag('auto_alias', []); $container->setParameter('existing', 'mysql'); $pass = new AutoAliasServicePass(); $this->expectException(InvalidArgumentException::class); $pass->process($container); } public function testProcessWithNonExistingAlias() { $container = new ContainerBuilder(); $container->register('example', 'Symfony\Component\DependencyInjection\Tests\Compiler\ServiceClassDefault') ->addTag('auto_alias', ['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', ['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', ['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 { }