123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- <?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\Loader;
- use Symfony\Bundle\FrameworkBundle\Templating\TemplateReference;
- use Symfony\Bundle\TwigBundle\Loader\FilesystemLoader;
- use Symfony\Bundle\TwigBundle\Tests\TestCase;
- class FilesystemLoaderTest extends TestCase
- {
- public function testGetSourceContext()
- {
- $parser = $this->getMock('Symfony\Component\Templating\TemplateNameParserInterface');
- $locator = $this->getMock('Symfony\Component\Config\FileLocatorInterface');
- $locator
- ->expects($this->once())
- ->method('locate')
- ->will($this->returnValue(__DIR__.'/../DependencyInjection/Fixtures/Resources/views/layout.html.twig'))
- ;
- $loader = new FilesystemLoader($locator, $parser);
- $loader->addPath(__DIR__.'/../DependencyInjection/Fixtures/Resources/views', 'namespace');
- // Twig-style
- $this->assertEquals("This is a layout\n", $loader->getSourceContext('@namespace/layout.html.twig')->getCode());
- // Symfony-style
- $this->assertEquals("This is a layout\n", $loader->getSourceContext('TwigBundle::layout.html.twig')->getCode());
- }
- public function testExists()
- {
- // should return true for templates that Twig does not find, but Symfony does
- $parser = $this->getMock('Symfony\Component\Templating\TemplateNameParserInterface');
- $locator = $this->getMock('Symfony\Component\Config\FileLocatorInterface');
- $locator
- ->expects($this->once())
- ->method('locate')
- ->will($this->returnValue($template = __DIR__.'/../DependencyInjection/Fixtures/Resources/views/layout.html.twig'))
- ;
- $loader = new FilesystemLoader($locator, $parser);
- $this->assertTrue($loader->exists($template));
- }
- /**
- * @expectedException \Twig_Error_Loader
- */
- public function testTwigErrorIfLocatorThrowsInvalid()
- {
- $parser = $this->getMock('Symfony\Component\Templating\TemplateNameParserInterface');
- $parser
- ->expects($this->once())
- ->method('parse')
- ->with('name.format.engine')
- ->will($this->returnValue(new TemplateReference('', '', 'name', 'format', 'engine')))
- ;
- $locator = $this->getMock('Symfony\Component\Config\FileLocatorInterface');
- $locator
- ->expects($this->once())
- ->method('locate')
- ->will($this->throwException(new \InvalidArgumentException('Unable to find template "NonExistent".')))
- ;
- $loader = new FilesystemLoader($locator, $parser);
- $loader->getCacheKey('name.format.engine');
- }
- /**
- * @expectedException \Twig_Error_Loader
- */
- public function testTwigErrorIfLocatorReturnsFalse()
- {
- $parser = $this->getMock('Symfony\Component\Templating\TemplateNameParserInterface');
- $parser
- ->expects($this->once())
- ->method('parse')
- ->with('name.format.engine')
- ->will($this->returnValue(new TemplateReference('', '', 'name', 'format', 'engine')))
- ;
- $locator = $this->getMock('Symfony\Component\Config\FileLocatorInterface');
- $locator
- ->expects($this->once())
- ->method('locate')
- ->will($this->returnValue(false))
- ;
- $loader = new FilesystemLoader($locator, $parser);
- $loader->getCacheKey('name.format.engine');
- }
- /**
- * @expectedException \Twig_Error_Loader
- * @expectedExceptionMessageRegExp /Unable to find template "name\.format\.engine" \(looked into: .*Tests.Loader.\.\..DependencyInjection.Fixtures.Resources.views\)/
- */
- public function testTwigErrorIfTemplateDoesNotExist()
- {
- $parser = $this->getMock('Symfony\Component\Templating\TemplateNameParserInterface');
- $locator = $this->getMock('Symfony\Component\Config\FileLocatorInterface');
- $loader = new FilesystemLoader($locator, $parser);
- $loader->addPath(__DIR__.'/../DependencyInjection/Fixtures/Resources/views');
- $method = new \ReflectionMethod('Symfony\Bundle\TwigBundle\Loader\FilesystemLoader', 'findTemplate');
- $method->setAccessible(true);
- $method->invoke($loader, 'name.format.engine');
- }
- public function testTwigSoftErrorIfTemplateDoesNotExist()
- {
- $parser = $this->getMock('Symfony\Component\Templating\TemplateNameParserInterface');
- $locator = $this->getMock('Symfony\Component\Config\FileLocatorInterface');
- $loader = new FilesystemLoader($locator, $parser);
- $loader->addPath(__DIR__.'/../DependencyInjection/Fixtures/Resources/views');
- $method = new \ReflectionMethod('Symfony\Bundle\TwigBundle\Loader\FilesystemLoader', 'findTemplate');
- $method->setAccessible(true);
- $this->assertFalse($method->invoke($loader, 'name.format.engine', false));
- }
- }
|