Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / symfony / dependency-injection / Tests / Compiler / ResolveParameterPlaceHoldersPassTest.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\ResolveParameterPlaceHoldersPass;
16 use Symfony\Component\DependencyInjection\ContainerBuilder;
17
18 class ResolveParameterPlaceHoldersPassTest extends TestCase
19 {
20     private $compilerPass;
21     private $container;
22     private $fooDefinition;
23
24     protected function setUp()
25     {
26         $this->compilerPass = new ResolveParameterPlaceHoldersPass();
27         $this->container = $this->createContainerBuilder();
28         $this->compilerPass->process($this->container);
29         $this->fooDefinition = $this->container->getDefinition('foo');
30     }
31
32     public function testClassParametersShouldBeResolved()
33     {
34         $this->assertSame('Foo', $this->fooDefinition->getClass());
35     }
36
37     public function testFactoryParametersShouldBeResolved()
38     {
39         $this->assertSame(array('FooFactory', 'getFoo'), $this->fooDefinition->getFactory());
40     }
41
42     public function testArgumentParametersShouldBeResolved()
43     {
44         $this->assertSame(array('bar', array('bar' => 'baz')), $this->fooDefinition->getArguments());
45     }
46
47     public function testMethodCallParametersShouldBeResolved()
48     {
49         $this->assertSame(array(array('foobar', array('bar', array('bar' => 'baz')))), $this->fooDefinition->getMethodCalls());
50     }
51
52     public function testPropertyParametersShouldBeResolved()
53     {
54         $this->assertSame(array('bar' => 'baz'), $this->fooDefinition->getProperties());
55     }
56
57     public function testFileParametersShouldBeResolved()
58     {
59         $this->assertSame('foo.php', $this->fooDefinition->getFile());
60     }
61
62     public function testAliasParametersShouldBeResolved()
63     {
64         $this->assertSame('foo', $this->container->getAlias('bar')->__toString());
65     }
66
67     public function testBindingsShouldBeResolved()
68     {
69         list($boundValue) = $this->container->getDefinition('foo')->getBindings()['$baz']->getValues();
70
71         $this->assertSame($this->container->getParameterBag()->resolveValue('%env(BAZ)%'), $boundValue);
72     }
73
74     private function createContainerBuilder()
75     {
76         $containerBuilder = new ContainerBuilder();
77
78         $containerBuilder->setParameter('foo.class', 'Foo');
79         $containerBuilder->setParameter('foo.factory.class', 'FooFactory');
80         $containerBuilder->setParameter('foo.arg1', 'bar');
81         $containerBuilder->setParameter('foo.arg2', array('%foo.arg1%' => 'baz'));
82         $containerBuilder->setParameter('foo.method', 'foobar');
83         $containerBuilder->setParameter('foo.property.name', 'bar');
84         $containerBuilder->setParameter('foo.property.value', 'baz');
85         $containerBuilder->setParameter('foo.file', 'foo.php');
86         $containerBuilder->setParameter('alias.id', 'bar');
87
88         $fooDefinition = $containerBuilder->register('foo', '%foo.class%');
89         $fooDefinition->setFactory(array('%foo.factory.class%', 'getFoo'));
90         $fooDefinition->setArguments(array('%foo.arg1%', array('%foo.arg1%' => 'baz')));
91         $fooDefinition->addMethodCall('%foo.method%', array('%foo.arg1%', '%foo.arg2%'));
92         $fooDefinition->setProperty('%foo.property.name%', '%foo.property.value%');
93         $fooDefinition->setFile('%foo.file%');
94         $fooDefinition->setBindings(array('$baz' => '%env(BAZ)%'));
95
96         $containerBuilder->setAlias('%alias.id%', 'foo');
97
98         return $containerBuilder;
99     }
100 }