فهرست منبع

[FrameworkBundle] Add unit tests for the TemplateLocator class

Victor Berchet 14 سال پیش
والد
کامیت
27a327e0de
1فایلهای تغییر یافته به همراه67 افزوده شده و 0 حذف شده
  1. 67 0
      src/Symfony/Bundle/FrameworkBundle/Tests/Templating/Loader/TemplateLocatorTest.php

+ 67 - 0
src/Symfony/Bundle/FrameworkBundle/Tests/Templating/Loader/TemplateLocatorTest.php

@@ -0,0 +1,67 @@
+<?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\FrameworkBundle\Tests\Templating\Loader;
+
+use Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator;
+use Symfony\Bundle\FrameworkBundle\Templating\TemplateReference;
+use Symfony\Bundle\FrameworkBundle\Tests\TestCase;
+
+class TemplateLocatorTest extends TestCase
+{
+    public function testLocateATemplate()
+    {
+        $template = new TemplateReference('bundle', 'controller', 'name', 'format', 'engine');
+
+        $fileLocator = $this->getFileLocator();
+
+        $fileLocator
+            ->expects($this->once())
+            ->method('locate')
+            ->with($template->getPath(), '/path/to/fallback')
+            ->will($this->returnValue('/path/to/template'))
+        ;
+
+        $locator = new TemplateLocator($fileLocator, '/path/to/fallback');
+
+        $this->assertEquals('/path/to/template', $locator->locate($template));
+    }
+
+    /**
+     * @expectedException \InvalidArgumentException
+     */
+    public function testThrowsExceptionWhenTemplateNotFound()
+    {
+        $template = new TemplateReference('bundle', 'controller', 'name', 'format', 'engine');
+
+        $fileLocator = $this->getFileLocator();
+
+        $fileLocator
+            ->expects($this->once())
+            ->method('locate')
+            ->will($this->throwException(new \InvalidArgumentException()))
+        ;
+
+        $locator = new TemplateLocator($fileLocator, '/path/to/fallback');
+
+        $locator->locate($template);
+    }
+
+    protected function getFileLocator()
+    {
+        return $this
+            ->getMockBuilder('Symfony\Component\Config\FileLocator')
+            ->setMethods(array('locate'))
+            ->setConstructorArgs(array('/path/to/fallback'))
+            ->getMock()
+        ;
+    }
+}