Вход Регистрация
Файл: symfony-2.7/src/Symfony/Bundle/TwigBundle/Tests/Loader/FilesystemLoaderTest.php
Строк: 147
<?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 SymfonyBundleTwigBundleTestsLoader;

use 
SymfonyBundleFrameworkBundleTemplatingTemplateReference;
use 
SymfonyBundleTwigBundleLoaderFilesystemLoader;
use 
SymfonyBundleTwigBundleTestsTestCase;

class 
FilesystemLoaderTest extends TestCase
{
    public function 
testGetSource()
    {
        
$parser $this->getMock('SymfonyComponentTemplatingTemplateNameParserInterface');
        
$locator $this->getMock('SymfonyComponentConfigFileLocatorInterface');
        
$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 layoutn"$loader->getSource('@namespace/layout.html.twig'));

        
// Symfony-style
        
$this->assertEquals("This is a layoutn"$loader->getSource('TwigBundle::layout.html.twig'));
    }

    public function 
testExists()
    {
        
// should return true for templates that Twig does not find, but Symfony does
        
$parser $this->getMock('SymfonyComponentTemplatingTemplateNameParserInterface');
        
$locator $this->getMock('SymfonyComponentConfigFileLocatorInterface');
        
$locator
            
->expects($this->once())
            ->
method('locate')
            ->
will($this->returnValue($template __DIR__.'/../DependencyInjection/Fixtures/Resources/views/layout.html.twig'))
        ;
        
$loader = new FilesystemLoader($locator$parser);

        return 
$this->assertTrue($loader->exists($template));
    }

    
/**
     * @expectedException Twig_Error_Loader
     */
    
public function testTwigErrorIfLocatorThrowsInvalid()
    {
        
$parser $this->getMock('SymfonyComponentTemplatingTemplateNameParserInterface');
        
$parser
            
->expects($this->once())
            ->
method('parse')
            ->
with('name.format.engine')
            ->
will($this->returnValue(new TemplateReference('''''name''format''engine')))
        ;

        
$locator $this->getMock('SymfonyComponentConfigFileLocatorInterface');
        
$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('SymfonyComponentTemplatingTemplateNameParserInterface');
        
$parser
            
->expects($this->once())
            ->
method('parse')
            ->
with('name.format.engine')
            ->
will($this->returnValue(new TemplateReference('''''name''format''engine')))
        ;

        
$locator $this->getMock('SymfonyComponentConfigFileLocatorInterface');
        
$locator
            
->expects($this->once())
            ->
method('locate')
            ->
will($this->returnValue(false))
        ;

        
$loader = new FilesystemLoader($locator$parser);
        
$loader->getCacheKey('name.format.engine');
    }
}
Онлайн: 2
Реклама