Version 1
[yaffs-website] / vendor / symfony / http-kernel / Tests / DependencyInjection / FragmentRendererPassTest.php
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/FragmentRendererPassTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/FragmentRendererPassTest.php
new file mode 100644 (file)
index 0000000..2a27fca
--- /dev/null
@@ -0,0 +1,152 @@
+<?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\HttpKernel\Tests\DependencyInjection;
+
+use PHPUnit\Framework\TestCase;
+use Symfony\Component\DependencyInjection\Reference;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpKernel\DependencyInjection\FragmentRendererPass;
+use Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface;
+
+class FragmentRendererPassTest extends TestCase
+{
+    /**
+     * @group legacy
+     */
+    public function testLegacyFragmentRedererWithoutAlias()
+    {
+        // no alias
+        $services = array(
+            'my_content_renderer' => array(array()),
+        );
+
+        $renderer = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
+        $renderer
+            ->expects($this->once())
+            ->method('addMethodCall')
+            ->with('addRenderer', array(new Reference('my_content_renderer')))
+        ;
+
+        $definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
+        $definition->expects($this->atLeastOnce())
+            ->method('getClass')
+            ->will($this->returnValue('Symfony\Component\HttpKernel\Tests\DependencyInjection\RendererService'));
+        $definition
+            ->expects($this->once())
+            ->method('isPublic')
+            ->will($this->returnValue(true))
+        ;
+
+        $builder = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'getDefinition'))->getMock();
+        $builder->expects($this->any())
+            ->method('hasDefinition')
+            ->will($this->returnValue(true));
+
+        // We don't test kernel.fragment_renderer here
+        $builder->expects($this->atLeastOnce())
+            ->method('findTaggedServiceIds')
+            ->will($this->returnValue($services));
+
+        $builder->expects($this->atLeastOnce())
+            ->method('getDefinition')
+            ->will($this->onConsecutiveCalls($renderer, $definition));
+
+        $pass = new FragmentRendererPass();
+        $pass->process($builder);
+    }
+
+    /**
+     * Tests that content rendering not implementing FragmentRendererInterface
+     * trigger an exception.
+     *
+     * @expectedException \InvalidArgumentException
+     */
+    public function testContentRendererWithoutInterface()
+    {
+        // one service, not implementing any interface
+        $services = array(
+            'my_content_renderer' => array(array('alias' => 'foo')),
+        );
+
+        $definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
+
+        $builder = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'getDefinition'))->getMock();
+        $builder->expects($this->any())
+            ->method('hasDefinition')
+            ->will($this->returnValue(true));
+
+        // We don't test kernel.fragment_renderer here
+        $builder->expects($this->atLeastOnce())
+            ->method('findTaggedServiceIds')
+            ->will($this->returnValue($services));
+
+        $builder->expects($this->atLeastOnce())
+            ->method('getDefinition')
+            ->will($this->returnValue($definition));
+
+        $pass = new FragmentRendererPass();
+        $pass->process($builder);
+    }
+
+    public function testValidContentRenderer()
+    {
+        $services = array(
+            'my_content_renderer' => array(array('alias' => 'foo')),
+        );
+
+        $renderer = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
+        $renderer
+            ->expects($this->once())
+            ->method('addMethodCall')
+            ->with('addRendererService', array('foo', 'my_content_renderer'))
+        ;
+
+        $definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
+        $definition->expects($this->atLeastOnce())
+            ->method('getClass')
+            ->will($this->returnValue('Symfony\Component\HttpKernel\Tests\DependencyInjection\RendererService'));
+        $definition
+            ->expects($this->once())
+            ->method('isPublic')
+            ->will($this->returnValue(true))
+        ;
+
+        $builder = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'getDefinition'))->getMock();
+        $builder->expects($this->any())
+            ->method('hasDefinition')
+            ->will($this->returnValue(true));
+
+        // We don't test kernel.fragment_renderer here
+        $builder->expects($this->atLeastOnce())
+            ->method('findTaggedServiceIds')
+            ->will($this->returnValue($services));
+
+        $builder->expects($this->atLeastOnce())
+            ->method('getDefinition')
+            ->will($this->onConsecutiveCalls($renderer, $definition));
+
+        $pass = new FragmentRendererPass();
+        $pass->process($builder);
+    }
+}
+
+class RendererService implements FragmentRendererInterface
+{
+    public function render($uri, Request $request = null, array $options = array())
+    {
+    }
+
+    public function getName()
+    {
+        return 'test';
+    }
+}