4 * This file is part of the Symfony package.
6 * (c) Fabien Potencier <fabien@symfony.com>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
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;
23 class FragmentRendererPassTest extends TestCase
26 * Tests that content rendering not implementing FragmentRendererInterface
27 * triggers an exception.
29 * @expectedException \InvalidArgumentException
31 public function testContentRendererWithoutInterface()
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'));
38 $pass = new FragmentRendererPass();
39 $pass->process($builder);
41 $this->assertEquals(array(array('addRendererService', array('foo', 'my_content_renderer'))), $fragmentHandlerDefinition->getMethodCalls());
44 public function testValidContentRenderer()
46 $builder = new ContainerBuilder();
47 $fragmentHandlerDefinition = $builder->register('fragment.handler')
49 $builder->register('my_content_renderer', 'Symfony\Component\HttpKernel\Tests\DependencyInjection\RendererService')
50 ->addTag('kernel.fragment_renderer', array('alias' => 'foo'));
52 $pass = new FragmentRendererPass();
53 $pass->process($builder);
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));
61 class RendererService implements FragmentRendererInterface
63 public function render($uri, Request $request = null, array $options = array())
67 public function getName()