vendor/symfony/src/Symfony/Bundle/TwigBundle/Tests/TwigEngineTest.php
changeset 0 7f95f8617b0b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/symfony/src/Symfony/Bundle/TwigBundle/Tests/TwigEngineTest.php	Sat Sep 24 15:40:41 2011 +0200
@@ -0,0 +1,92 @@
+<?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\Bundle\TwigBundle\Tests;
+
+use Symfony\Bundle\TwigBundle\TwigEngine;
+use Symfony\Component\DependencyInjection\Container;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Session;
+use Symfony\Component\HttpFoundation\SessionStorage\ArraySessionStorage;
+use Symfony\Component\Templating\TemplateNameParser;
+use Symfony\Bundle\FrameworkBundle\Templating\GlobalVariables;
+
+class TwigEngineTest extends TestCase
+{
+    public function testEvaluateAddsAppGlobal()
+    {
+        $environment = $this->getTwigEnvironment();
+        $container = $this->getContainer();
+        $engine = new TwigEngine($environment, new TemplateNameParser(), $app = new GlobalVariables($container));
+
+        $template = $this->getMock('\Twig_TemplateInterface');
+
+        $environment->expects($this->once())
+            ->method('loadTemplate')
+            ->will($this->returnValue($template));
+
+        $engine->render('name');
+
+        $request = $container->get('request');
+        $globals = $environment->getGlobals();
+        $this->assertSame($app, $globals['app']);
+    }
+
+    public function testEvaluateWithoutAvailableRequest()
+    {
+        $environment = $this->getTwigEnvironment();
+        $container = new Container();
+        $engine = new TwigEngine($environment, new TemplateNameParser(), new GlobalVariables($container));
+
+        $template = $this->getMock('\Twig_TemplateInterface');
+
+        $environment->expects($this->once())
+            ->method('loadTemplate')
+            ->will($this->returnValue($template));
+
+        $container->set('request', null);
+
+        $engine->render('name');
+
+        $globals = $environment->getGlobals();
+        $this->assertEmpty($globals['app']->getRequest());
+    }
+
+    /**
+     * Creates a Container with a Session-containing Request service.
+     *
+     * @return Container
+     */
+    protected function getContainer()
+    {
+        $container = new Container();
+        $request = new Request();
+        $session = new Session(new ArraySessionStorage());
+
+        $request->setSession($session);
+        $container->set('request', $request);
+
+        return $container;
+    }
+
+    /**
+     * Creates a mock Twig_Environment object.
+     *
+     * @return \Twig_Environment
+     */
+    protected function getTwigEnvironment()
+    {
+        return $this
+            ->getMockBuilder('\Twig_Environment')
+            ->setMethods(array('loadTemplate'))
+            ->getMock();
+    }
+}