Вход Регистрация
Файл: symfony-2.7/src/Symfony/Component/DependencyInjection/Tests/Compiler/DecoratorServicePassTest.php
Строк: 152
<?php

namespace SymfonyComponentDependencyInjectionTestsCompiler;

use 
SymfonyComponentDependencyInjectionAlias;
use 
SymfonyComponentDependencyInjectionContainerBuilder;
use 
SymfonyComponentDependencyInjectionCompilerDecoratorServicePass;

class 
DecoratorServicePassTest extends PHPUnit_Framework_TestCase
{
    public function 
testProcessWithoutAlias()
    {
        
$container = new ContainerBuilder();
        
$fooDefinition $container
            
->register('foo')
            ->
setPublic(false)
        ;
        
$fooExtendedDefinition $container
            
->register('foo.extended')
            ->
setPublic(true)
            ->
setDecoratedService('foo')
        ;
        
$barDefinition $container
            
->register('bar')
            ->
setPublic(true)
        ;
        
$barExtendedDefinition $container
            
->register('bar.extended')
            ->
setPublic(true)
            ->
setDecoratedService('bar''bar.yoo')
        ;

        
$this->process($container);

        
$this->assertEquals('foo.extended'$container->getAlias('foo'));
        
$this->assertFalse($container->getAlias('foo')->isPublic());

        
$this->assertEquals('bar.extended'$container->getAlias('bar'));
        
$this->assertTrue($container->getAlias('bar')->isPublic());

        
$this->assertSame($fooDefinition$container->getDefinition('foo.extended.inner'));
        
$this->assertFalse($container->getDefinition('foo.extended.inner')->isPublic());

        
$this->assertSame($barDefinition$container->getDefinition('bar.yoo'));
        
$this->assertFalse($container->getDefinition('bar.yoo')->isPublic());

        
$this->assertNull($fooExtendedDefinition->getDecoratedService());
        
$this->assertNull($barExtendedDefinition->getDecoratedService());
    }

    public function 
testProcessWithAlias()
    {
        
$container = new ContainerBuilder();
        
$container
            
->register('foo')
            ->
setPublic(true)
        ;
        
$container->setAlias('foo.alias', new Alias('foo'false));
        
$fooExtendedDefinition $container
            
->register('foo.extended')
            ->
setPublic(true)
            ->
setDecoratedService('foo.alias')
        ;

        
$this->process($container);

        
$this->assertEquals('foo.extended'$container->getAlias('foo.alias'));
        
$this->assertFalse($container->getAlias('foo.alias')->isPublic());

        
$this->assertEquals('foo'$container->getAlias('foo.extended.inner'));
        
$this->assertFalse($container->getAlias('foo.extended.inner')->isPublic());

        
$this->assertNull($fooExtendedDefinition->getDecoratedService());
    }

    protected function 
process(ContainerBuilder $container)
    {
        
$repeatedPass = new DecoratorServicePass();
        
$repeatedPass->process($container);
    }
}
Онлайн: 4
Реклама