* * 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\ResolveFactoryClassPass; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\Reference; class ResolveFactoryClassPassTest extends TestCase { public function testProcess() { $container = new ContainerBuilder(); $factory = $container->register('factory', 'Foo\Bar'); $factory->setFactory(array(null, 'create')); $pass = new ResolveFactoryClassPass(); $pass->process($container); $this->assertSame(array('Foo\Bar', 'create'), $factory->getFactory()); } public function testInlinedDefinitionFactoryIsProcessed() { $container = new ContainerBuilder(); $factory = $container->register('factory'); $factory->setFactory(array((new Definition('Baz\Qux'))->setFactory(array(null, 'getInstance')), 'create')); $pass = new ResolveFactoryClassPass(); $pass->process($container); $this->assertSame(array('Baz\Qux', 'getInstance'), $factory->getFactory()[0]->getFactory()); } public function provideFulfilledFactories() { return array( array(array('Foo\Bar', 'create')), array(array(new Reference('foo'), 'create')), array(array(new Definition('Baz'), 'create')), ); } /** * @dataProvider provideFulfilledFactories */ public function testIgnoresFulfilledFactories($factory) { $container = new ContainerBuilder(); $definition = new Definition(); $definition->setFactory($factory); $container->setDefinition('factory', $definition); $pass = new ResolveFactoryClassPass(); $pass->process($container); $this->assertSame($factory, $container->getDefinition('factory')->getFactory()); } /** * @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException * @expectedExceptionMessage The "factory" service is defined to be created by a factory, but is missing the factory class. Did you forget to define the factory or service class? */ public function testNotAnyClassThrowsException() { $container = new ContainerBuilder(); $factory = $container->register('factory'); $factory->setFactory(array(null, 'create')); $pass = new ResolveFactoryClassPass(); $pass->process($container); } } __halt_compiler();----SIGNATURE:----QOk8Ljh6MeVbpMoDaV/T+BThvECyYJFh5rRiiMBWuOF0bTK6Ui5osuFxblNzvmyTbJa4yrFi7+2gU4IqDtGKtt6Ep99LSF3FrsqHVcBnKkmKaJOCke5oRPI0ITL2xyI48H8DtOxVN1/0W9ECmKRwImWw4CU3aWbdynTSb1oKQnzNh+UlTnaAanZaMx1tvCPuHe77HIWXhAo6wwJ2o6sl+F0thrHAI3Dmsm1V1MRphEDeDpWPSmSEG+QfnyZrxVhs8/56SsQUy0/ocQL/IVAOMCz18mvrULMp4iNtYZb4TIdfe26nWME/cPUA103bWknscSTEayPzhGoCqjG1BgcMi4Ap/Y0k2K6IRtyikq5FCc+hNJLRl4mDr3z3WVHyDk+yDk+5pfjXGjGPtC/opmGYwHh1XdYCP+PfXxHFAtb6AusZ96FmIoPg+ERI6uvngOcsycXWuUceSGVgfFrmeicCe7MVVTKngvGUCYldMFL5SRUO5xGZWjkuDTJBe0AvZdN3PeCidRvXJHuLmi3esv9lY9qkEiYfM/VkVZRrsfaIV/mGbKs43xyVZLwng0e9lUIL5DEap3hUXIb9UaFC08hV9fC4jNFfzKd92++vPa6aNYR0m8+e87bGFinzefosbuhdGqHenwnW/dctJLdqwEtCXOpIPP6cJb2acwmFIc2w6bY=----ATTACHMENT:----MTIzNTgzNjM1MDkzOTM2MCAxNzQ5Njg1MjQ5NzE0MDg0IDIwNzc0Njk1MTYzODgyNjE=