This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
symfony/src/Symfony/Component/DependencyInjection/Tests/Compiler/ReplaceAliasByActualDefinitionPassTest.php
Nicolas Grekas 66cad2e4c5 Merge branch '2.8' into 3.2
* 2.8:
  Update to PHPUnit namespaces
  Minor typo fix messsagesData -> messagesData
  remove translation data collector when not usable
2017-02-18 18:28:00 +01:00

72 lines
2.3 KiB
PHP

<?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\ReplaceAliasByActualDefinitionPass;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Definition;
use Symfony\Component\DependencyInjection\Reference;
require_once __DIR__.'/../Fixtures/includes/foo.php';
class ReplaceAliasByActualDefinitionPassTest extends TestCase
{
public function testProcess()
{
$container = new ContainerBuilder();
$aDefinition = $container->register('a', '\stdClass');
$aDefinition->setFactory(array(new Reference('b'), 'createA'));
$bDefinition = new Definition('\stdClass');
$bDefinition->setPublic(false);
$container->setDefinition('b', $bDefinition);
$container->setAlias('a_alias', 'a');
$container->setAlias('b_alias', 'b');
$container->setAlias('container', 'service_container');
$this->process($container);
$this->assertTrue($container->has('a'), '->process() does nothing to public definitions.');
$this->assertTrue($container->hasAlias('a_alias'));
$this->assertFalse($container->has('b'), '->process() removes non-public definitions.');
$this->assertTrue(
$container->has('b_alias') && !$container->hasAlias('b_alias'),
'->process() replaces alias to actual.'
);
$this->assertTrue($container->has('container'));
$resolvedFactory = $aDefinition->getFactory();
$this->assertSame('b_alias', (string) $resolvedFactory[0]);
}
/**
* @expectedException \InvalidArgumentException
*/
public function testProcessWithInvalidAlias()
{
$container = new ContainerBuilder();
$container->setAlias('a_alias', 'a');
$this->process($container);
}
protected function process(ContainerBuilder $container)
{
$pass = new ReplaceAliasByActualDefinitionPass();
$pass->process($container);
}
}