Вход Регистрация
Файл: symfony-2.7/src/Symfony/Bundle/WebProfilerBundle/Tests/Profiler/TemplateManagerTest.php
Строк: 155
<?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 SymfonyBundleWebProfilerBundleTestsProfiler;

use 
SymfonyBundleWebProfilerBundleTestsTestCase;
use 
SymfonyBundleWebProfilerBundleProfilerTemplateManager;

/**
 * Test for TemplateManager class.
 *
 * @author Artur Wielogórski <wodor@wodor.net>
 */
class TemplateManagerTest extends TestCase
{
    
/**
     * @var Twig_Environment
     */
    
protected $twigEnvironment;

    
/**
     * @var SymfonyComponentHttpKernelProfilerProfiler
     */
    
protected $profiler;

    
/**
     * @var PHPUnit_Framework_MockObject_MockObject
     */
    
protected $profile;

    
/**
     * @var SymfonyBundleWebProfilerBundleProfilerTemplateManager
     */
    
protected $templateManager;

    public function 
setUp()
    {
        
parent::setUp();

        
$profiler $this->mockProfiler();
        
$twigEnvironment $this->mockTwigEnvironment();
        
$templates = array(
            
'data_collector.foo' => array('foo','FooBundle:Collector:foo'),
            
'data_collector.bar' => array('bar','FooBundle:Collector:bar'),
            
'data_collector.baz' => array('baz','FooBundle:Collector:baz'),
            );

        
$this->templateManager = new TemplateManager($profiler$twigEnvironment$templates);
    }

    
/**
     * @expectedException SymfonyComponentHttpKernelExceptionNotFoundHttpException
     */
    
public function testGetNameOfInvalidTemplate()
    {
        
$profile $this->mockProfile();
        
$this->templateManager->getName($profile'notexistingpanel');
    }

    
/**
     * if template exists in both profile and profiler then its name should be returned.
     */
    
public function testGetNameValidTemplate()
    {
        
$this->profiler->expects($this->any())
            ->
method('has')
            ->
withAnyParameters()
            ->
will($this->returnCallback(array($this'profilerHasCallback')));

        
$profile $this->mockProfile();
        
$profile->expects($this->any())
            ->
method('hasCollector')
            ->
will($this->returnCallback(array($this'profileHasCollectorCallback')));

        
$this->assertEquals('FooBundle:Collector:foo.html.twig'$this->templateManager->getName($profile'foo'));
    }

    
/**
     * template should be loaded for 'foo' because other collectors are
     * missing in profile or in profiler.
     */
    
public function testGetTemplates()
    {
        
$profile $this->mockProfile();
        
$profile->expects($this->any())
            ->
method('hasCollector')
            ->
will($this->returnCallback(array($this'profilerHasCallback')));

        
$this->profiler->expects($this->any())
            ->
method('has')
            ->
withAnyParameters()
            ->
will($this->returnCallback(array($this'profileHasCollectorCallback')));

        
$result $this->templateManager->getTemplates($profile);
        
$this->assertArrayHasKey('foo'$result);
        
$this->assertArrayNotHasKey('bar'$result);
        
$this->assertArrayNotHasKey('baz'$result);
    }

    public function 
profilerHasCallback($panel)
    {
        switch (
$panel) {
            case 
'foo':
            case 
'bar':
                return 
true;
            default:
                return 
false;
        }
    }

    public function 
profileHasCollectorCallback($panel)
    {
        switch (
$panel) {
            case 
'foo':
            case 
'baz':
                return 
true;
            default:
                return 
false;
        }
    }

    protected function 
mockProfile()
    {
        
$this->profile $this->getMockBuilder('SymfonyComponentHttpKernelProfilerProfile')
            ->
disableOriginalConstructor()
            ->
getMock();

        return  
$this->profile;
    }

    protected function 
mockTwigEnvironment()
    {
        
$this->twigEnvironment $this->getMockBuilder('Twig_Environment')->getMock();

        
$this->twigEnvironment->expects($this->any())
            ->
method('loadTemplate')
            ->
will($this->returnValue('loadedTemplate'));

        
$this->twigEnvironment->expects($this->any())
            ->
method('getLoader')
            ->
will($this->returnValue($this->getMock('Twig_LoaderInterface')));

        return 
$this->twigEnvironment;
    }

    protected function 
mockProfiler()
    {
        
$this->profiler $this->getMockBuilder('SymfonyComponentHttpKernelProfilerProfiler')
            ->
disableOriginalConstructor()
            ->
getMock();

        return 
$this->profiler;
    }
}
Онлайн: 1
Реклама