X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fsymfony%2Fdependency-injection%2FTests%2FCompiler%2FReplaceAliasByActualDefinitionPassTest.php;fp=vendor%2Fsymfony%2Fdependency-injection%2FTests%2FCompiler%2FReplaceAliasByActualDefinitionPassTest.php;h=7e7c3e41e2a8e69e3bae16fe6069aa9d1ca27eec;hp=0000000000000000000000000000000000000000;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad diff --git a/vendor/symfony/dependency-injection/Tests/Compiler/ReplaceAliasByActualDefinitionPassTest.php b/vendor/symfony/dependency-injection/Tests/Compiler/ReplaceAliasByActualDefinitionPassTest.php new file mode 100644 index 000000000..7e7c3e41e --- /dev/null +++ b/vendor/symfony/dependency-injection/Tests/Compiler/ReplaceAliasByActualDefinitionPassTest.php @@ -0,0 +1,94 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\DependencyInjection\Tests\Compiler; + +use PHPUnit\Framework\TestCase; +use Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Definition; +use Symfony\Component\DependencyInjection\Reference; + +require_once __DIR__.'/../Fixtures/includes/foo.php'; + +class ReplaceAliasByActualDefinitionPassTest extends TestCase +{ + public function testProcess() + { + $container = new ContainerBuilder(); + + $aDefinition = $container->register('a', '\stdClass'); + $aDefinition->setFactoryService('b', false); + + $aDefinition->setFactory(array(new Reference('b'), 'createA')); + + $bDefinition = new Definition('\stdClass'); + $bDefinition->setPublic(false); + $container->setDefinition('b', $bDefinition); + + $container->setAlias('a_alias', 'a'); + $container->setAlias('b_alias', 'b'); + + $container->setAlias('container', 'service_container'); + + $this->process($container); + + $this->assertTrue($container->has('a'), '->process() does nothing to public definitions.'); + $this->assertTrue($container->hasAlias('a_alias')); + $this->assertFalse($container->has('b'), '->process() removes non-public definitions.'); + $this->assertTrue( + $container->has('b_alias') && !$container->hasAlias('b_alias'), + '->process() replaces alias to actual.' + ); + + $this->assertSame('b_alias', $aDefinition->getFactoryService(false)); + $this->assertTrue($container->has('container')); + + $resolvedFactory = $aDefinition->getFactory(); + $this->assertSame('b_alias', (string) $resolvedFactory[0]); + } + + /** + * @group legacy + */ + public function testPrivateAliasesInFactory() + { + $container = new ContainerBuilder(); + + $container->register('a', 'Bar\FooClass'); + $container->register('b', 'Bar\FooClass') + ->setFactoryService('a') + ->setFactoryMethod('getInstance'); + + $container->register('c', 'stdClass')->setPublic(false); + $container->setAlias('c_alias', 'c'); + + $this->process($container); + + $this->assertInstanceOf('Bar\FooClass', $container->get('b')); + } + + /** + * @expectedException \InvalidArgumentException + */ + public function testProcessWithInvalidAlias() + { + $container = new ContainerBuilder(); + $container->setAlias('a_alias', 'a'); + $this->process($container); + } + + protected function process(ContainerBuilder $container) + { + $pass = new ReplaceAliasByActualDefinitionPass(); + $pass->process($container); + } +}