Вход Регистрация
Файл: 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
Реклама