7574e7943b4cb4e6dcc1ba812e1ca8c1d5e20e74
[yaffs-website] / vendor / symfony / dependency-injection / Tests / Compiler / ReplaceAliasByActualDefinitionPassTest.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Component\DependencyInjection\Tests\Compiler;
13
14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass;
16 use Symfony\Component\DependencyInjection\ContainerBuilder;
17 use Symfony\Component\DependencyInjection\Definition;
18 use Symfony\Component\DependencyInjection\Reference;
19
20 require_once __DIR__.'/../Fixtures/includes/foo.php';
21
22 class ReplaceAliasByActualDefinitionPassTest extends TestCase
23 {
24     public function testProcess()
25     {
26         $container = new ContainerBuilder();
27
28         $aDefinition = $container->register('a', '\stdClass');
29         $aDefinition->setFactory(array(new Reference('b'), 'createA'));
30
31         $bDefinition = new Definition('\stdClass');
32         $bDefinition->setPublic(false);
33         $container->setDefinition('b', $bDefinition);
34
35         $container->setAlias('a_alias', 'a');
36         $container->setAlias('b_alias', 'b');
37
38         $container->setAlias('container', 'service_container');
39
40         $this->process($container);
41
42         $this->assertTrue($container->has('a'), '->process() does nothing to public definitions.');
43         $this->assertTrue($container->hasAlias('a_alias'));
44         $this->assertFalse($container->has('b'), '->process() removes non-public definitions.');
45         $this->assertTrue(
46             $container->has('b_alias') && !$container->hasAlias('b_alias'),
47             '->process() replaces alias to actual.'
48         );
49
50         $this->assertTrue($container->has('container'));
51
52         $resolvedFactory = $aDefinition->getFactory();
53         $this->assertSame('b_alias', (string) $resolvedFactory[0]);
54     }
55
56     /**
57      * @expectedException \InvalidArgumentException
58      */
59     public function testProcessWithInvalidAlias()
60     {
61         $container = new ContainerBuilder();
62         $container->setAlias('a_alias', 'a');
63         $this->process($container);
64     }
65
66     protected function process(ContainerBuilder $container)
67     {
68         $pass = new ReplaceAliasByActualDefinitionPass();
69         $pass->process($container);
70     }
71 }