Pull merge.
[yaffs-website] / vendor / symfony / http-kernel / Tests / DependencyInjection / FragmentRendererPassTest.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\HttpKernel\Tests\DependencyInjection;
13
14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument;
16 use Symfony\Component\DependencyInjection\ContainerBuilder;
17 use Symfony\Component\DependencyInjection\Reference;
18 use Symfony\Component\DependencyInjection\ServiceLocator;
19 use Symfony\Component\HttpFoundation\Request;
20 use Symfony\Component\HttpKernel\DependencyInjection\FragmentRendererPass;
21 use Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface;
22
23 class FragmentRendererPassTest extends TestCase
24 {
25     /**
26      * Tests that content rendering not implementing FragmentRendererInterface
27      * triggers an exception.
28      *
29      * @expectedException \InvalidArgumentException
30      */
31     public function testContentRendererWithoutInterface()
32     {
33         $builder = new ContainerBuilder();
34         $fragmentHandlerDefinition = $builder->register('fragment.handler');
35         $builder->register('my_content_renderer', 'Symfony\Component\DependencyInjection\Definition')
36             ->addTag('kernel.fragment_renderer', array('alias' => 'foo'));
37
38         $pass = new FragmentRendererPass();
39         $pass->process($builder);
40
41         $this->assertEquals(array(array('addRendererService', array('foo', 'my_content_renderer'))), $fragmentHandlerDefinition->getMethodCalls());
42     }
43
44     public function testValidContentRenderer()
45     {
46         $builder = new ContainerBuilder();
47         $fragmentHandlerDefinition = $builder->register('fragment.handler')
48             ->addArgument(null);
49         $builder->register('my_content_renderer', 'Symfony\Component\HttpKernel\Tests\DependencyInjection\RendererService')
50             ->addTag('kernel.fragment_renderer', array('alias' => 'foo'));
51
52         $pass = new FragmentRendererPass();
53         $pass->process($builder);
54
55         $serviceLocatorDefinition = $builder->getDefinition((string) $fragmentHandlerDefinition->getArgument(0));
56         $this->assertSame(ServiceLocator::class, $serviceLocatorDefinition->getClass());
57         $this->assertEquals(array('foo' => new ServiceClosureArgument(new Reference('my_content_renderer'))), $serviceLocatorDefinition->getArgument(0));
58     }
59 }
60
61 class RendererService implements FragmentRendererInterface
62 {
63     public function render($uri, Request $request = null, array $options = array())
64     {
65     }
66
67     public function getName()
68     {
69         return 'test';
70     }
71 }