Вход Регистрация
Файл: symfony-2.7/src/Symfony/Bundle/FrameworkBundle/Tests/Templating/TemplateNameParserTest.php
Строк: 148
<?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 SymfonyBundleFrameworkBundleTestsTemplating;

use 
SymfonyBundleFrameworkBundleTestsTestCase;
use 
SymfonyBundleFrameworkBundleTemplatingTemplateNameParser;
use 
SymfonyBundleFrameworkBundleTemplatingTemplateReference;
use 
SymfonyComponentTemplatingTemplateReference as BaseTemplateReference;

class 
TemplateNameParserTest extends TestCase
{
    protected 
$parser;

    protected function 
setUp()
    {
        
$kernel $this->getMock('SymfonyComponentHttpKernelKernelInterface');
        
$kernel
            
->expects($this->any())
            ->
method('getBundle')
            ->
will($this->returnCallback(function ($bundle) {
                if (
in_array($bundle, array('SensioFooBundle''SensioCmsFooBundle''FooBundle'))) {
                    return 
true;
                }

                throw new 
InvalidArgumentException();
            }))
        ;
        
$this->parser = new TemplateNameParser($kernel);
    }

    protected function 
tearDown()
    {
        
$this->parser null;
    }

    
/**
     * @dataProvider getLogicalNameToTemplateProvider
     */
    
public function testParse($name$ref)
    {
        
$template $this->parser->parse($name);

        
$this->assertEquals($template->getLogicalName(), $ref->getLogicalName());
        
$this->assertEquals($template->getLogicalName(), $name);
    }

    public function 
getLogicalNameToTemplateProvider()
    {
        return array(
            array(
'FooBundle:Post:index.html.php', new TemplateReference('FooBundle''Post''index''html''php')),
            array(
'FooBundle:Post:index.html.twig', new TemplateReference('FooBundle''Post''index''html''twig')),
            array(
'FooBundle:Post:index.xml.php', new TemplateReference('FooBundle''Post''index''xml''php')),
            array(
'SensioFooBundle:Post:index.html.php', new TemplateReference('SensioFooBundle''Post''index''html''php')),
            array(
'SensioCmsFooBundle:Post:index.html.php', new TemplateReference('SensioCmsFooBundle''Post''index''html''php')),
            array(
':Post:index.html.php', new TemplateReference('''Post''index''html''php')),
            array(
'::index.html.php', new TemplateReference('''''index''html''php')),
            array(
'FooBundle:Post:foo.bar.index.html.php', new TemplateReference('FooBundle''Post''foo.bar.index''html''php')),
            array(
'/path/to/section/name.php', new BaseTemplateReference('/path/to/section/name.php''php')),
            array(
'name.twig', new BaseTemplateReference('name.twig''twig')),
            array(
'name', new BaseTemplateReference('name')),
        );
    }

    
/**
     * @expectedException InvalidArgumentException
     */
    
public function testParseValidNameWithNotFoundBundle()
    {
        
$this->parser->parse('BarBundle:Post:index.html.php');
    }
}
Онлайн: 1
Реклама