Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / symfony / dependency-injection / Tests / Compiler / ResolveDefinitionTemplatesPassTest.php
index b68bdceac53a85603efdb5596db58adc11db9bb8..39ae7f4f622971c3c36dcf9bc7dc854bfdf59eba 100644 (file)
 namespace Symfony\Component\DependencyInjection\Tests\Compiler;
 
 use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\DefinitionDecorator;
+use Symfony\Component\DependencyInjection\ChildDefinition;
 use Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
 
+/**
+ * @group legacy
+ */
 class ResolveDefinitionTemplatesPassTest extends TestCase
 {
     public function testProcess()
     {
         $container = new ContainerBuilder();
         $container->register('parent', 'foo')->setArguments(array('moo', 'b'))->setProperty('foo', 'moo');
-        $container->setDefinition('child', new DefinitionDecorator('parent'))
+        $container->setDefinition('child', new ChildDefinition('parent'))
             ->replaceArgument(0, 'a')
             ->setProperty('foo', 'bar')
             ->setClass('bar')
@@ -31,7 +34,7 @@ class ResolveDefinitionTemplatesPassTest extends TestCase
         $this->process($container);
 
         $def = $container->getDefinition('child');
-        $this->assertNotInstanceOf('Symfony\Component\DependencyInjection\DefinitionDecorator', $def);
+        $this->assertNotInstanceOf(ChildDefinition::class, $def);
         $this->assertEquals('bar', $def->getClass());
         $this->assertEquals(array('a', 'b'), $def->getArguments());
         $this->assertEquals(array('foo' => 'bar'), $def->getProperties());
@@ -47,7 +50,7 @@ class ResolveDefinitionTemplatesPassTest extends TestCase
         ;
 
         $container
-            ->setDefinition('child', new DefinitionDecorator('parent'))
+            ->setDefinition('child', new ChildDefinition('parent'))
             ->addMethodCall('bar', array('foo'))
         ;
 
@@ -70,7 +73,7 @@ class ResolveDefinitionTemplatesPassTest extends TestCase
         ;
 
         $container
-            ->setDefinition('child', new DefinitionDecorator('parent'))
+            ->setDefinition('child', new ChildDefinition('parent'))
         ;
 
         $this->process($container);
@@ -89,7 +92,7 @@ class ResolveDefinitionTemplatesPassTest extends TestCase
         ;
 
         $container
-            ->setDefinition('child', new DefinitionDecorator('parent'))
+            ->setDefinition('child', new ChildDefinition('parent'))
         ;
 
         $this->process($container);
@@ -108,7 +111,7 @@ class ResolveDefinitionTemplatesPassTest extends TestCase
         ;
 
         $container
-            ->setDefinition('child', new DefinitionDecorator('parent'))
+            ->setDefinition('child', new ChildDefinition('parent'))
         ;
 
         $this->process($container);
@@ -127,7 +130,7 @@ class ResolveDefinitionTemplatesPassTest extends TestCase
         ;
 
         $container
-            ->setDefinition('child', new DefinitionDecorator('parent'))
+            ->setDefinition('child', new ChildDefinition('parent'))
         ;
 
         $this->process($container);
@@ -145,7 +148,7 @@ class ResolveDefinitionTemplatesPassTest extends TestCase
         ;
 
         $container
-            ->setDefinition('child', new DefinitionDecorator('parent'))
+            ->setDefinition('child', new ChildDefinition('parent'))
             ->setShared(false)
         ;
 
@@ -165,12 +168,12 @@ class ResolveDefinitionTemplatesPassTest extends TestCase
         ;
 
         $container
-            ->setDefinition('child2', new DefinitionDecorator('child1'))
+            ->setDefinition('child2', new ChildDefinition('child1'))
             ->replaceArgument(1, 'b')
         ;
 
         $container
-            ->setDefinition('child1', new DefinitionDecorator('parent'))
+            ->setDefinition('child1', new ChildDefinition('parent'))
             ->replaceArgument(0, 'a')
         ;
 
@@ -187,7 +190,7 @@ class ResolveDefinitionTemplatesPassTest extends TestCase
 
         $container->register('parent', 'stdClass');
 
-        $container->setDefinition('child1', new DefinitionDecorator('parent'))
+        $container->setDefinition('child1', new ChildDefinition('parent'))
             ->setLazy(true)
         ;
 
@@ -204,7 +207,7 @@ class ResolveDefinitionTemplatesPassTest extends TestCase
             ->setLazy(true)
         ;
 
-        $container->setDefinition('child1', new DefinitionDecorator('parent'));
+        $container->setDefinition('child1', new ChildDefinition('parent'));
 
         $this->process($container);
 
@@ -215,15 +218,17 @@ class ResolveDefinitionTemplatesPassTest extends TestCase
     {
         $container = new ContainerBuilder();
 
-        $container->register('parent', 'stdClass');
-
-        $container->setDefinition('child1', new DefinitionDecorator('parent'))
+        $container->register('parent', 'stdClass')
             ->setAutowired(true)
         ;
 
+        $container->setDefinition('child1', new ChildDefinition('parent'))
+            ->setAutowired(false)
+        ;
+
         $this->process($container);
 
-        $this->assertTrue($container->getDefinition('child1')->isAutowired());
+        $this->assertFalse($container->getDefinition('child1')->isAutowired());
     }
 
     public function testSetAutowiredOnServiceIsParent()
@@ -234,7 +239,7 @@ class ResolveDefinitionTemplatesPassTest extends TestCase
             ->setAutowired(true)
         ;
 
-        $container->setDefinition('child1', new DefinitionDecorator('parent'));
+        $container->setDefinition('child1', new ChildDefinition('parent'));
 
         $this->process($container);
 
@@ -247,33 +252,33 @@ class ResolveDefinitionTemplatesPassTest extends TestCase
 
         $container->register('parent', 'parentClass');
         $container->register('sibling', 'siblingClass')
-            ->setConfigurator(new DefinitionDecorator('parent'), 'foo')
-            ->setFactory(array(new DefinitionDecorator('parent'), 'foo'))
-            ->addArgument(new DefinitionDecorator('parent'))
-            ->setProperty('prop', new DefinitionDecorator('parent'))
-            ->addMethodCall('meth', array(new DefinitionDecorator('parent')))
+            ->setConfigurator(new ChildDefinition('parent'), 'foo')
+            ->setFactory(array(new ChildDefinition('parent'), 'foo'))
+            ->addArgument(new ChildDefinition('parent'))
+            ->setProperty('prop', new ChildDefinition('parent'))
+            ->addMethodCall('meth', array(new ChildDefinition('parent')))
         ;
 
         $this->process($container);
 
         $configurator = $container->getDefinition('sibling')->getConfigurator();
-        $this->assertSame('Symfony\Component\DependencyInjection\Definition', get_class($configurator));
+        $this->assertInstanceOf('Symfony\Component\DependencyInjection\Definition', $configurator);
         $this->assertSame('parentClass', $configurator->getClass());
 
         $factory = $container->getDefinition('sibling')->getFactory();
-        $this->assertSame('Symfony\Component\DependencyInjection\Definition', get_class($factory[0]));
+        $this->assertInstanceOf('Symfony\Component\DependencyInjection\Definition', $factory[0]);
         $this->assertSame('parentClass', $factory[0]->getClass());
 
         $argument = $container->getDefinition('sibling')->getArgument(0);
-        $this->assertSame('Symfony\Component\DependencyInjection\Definition', get_class($argument));
+        $this->assertInstanceOf('Symfony\Component\DependencyInjection\Definition', $argument);
         $this->assertSame('parentClass', $argument->getClass());
 
         $properties = $container->getDefinition('sibling')->getProperties();
-        $this->assertSame('Symfony\Component\DependencyInjection\Definition', get_class($properties['prop']));
+        $this->assertInstanceOf('Symfony\Component\DependencyInjection\Definition', $properties['prop']);
         $this->assertSame('parentClass', $properties['prop']->getClass());
 
         $methodCalls = $container->getDefinition('sibling')->getMethodCalls();
-        $this->assertSame('Symfony\Component\DependencyInjection\Definition', get_class($methodCalls[0][1][0]));
+        $this->assertInstanceOf('Symfony\Component\DependencyInjection\Definition', $methodCalls[0][1][0]);
         $this->assertSame('parentClass', $methodCalls[0][1][0]->getClass());
     }
 
@@ -283,7 +288,7 @@ class ResolveDefinitionTemplatesPassTest extends TestCase
 
         $container->register('parent', 'stdClass');
 
-        $container->setDefinition('child1', new DefinitionDecorator('parent'))
+        $container->setDefinition('child1', new ChildDefinition('parent'))
             ->setDecoratedService('foo', 'foo_inner', 5)
         ;
 
@@ -299,7 +304,7 @@ class ResolveDefinitionTemplatesPassTest extends TestCase
             ->setDeprecated(true)
         ;
 
-        $container->setDefinition('decorated_deprecated_parent', new DefinitionDecorator('deprecated_parent'));
+        $container->setDefinition('decorated_deprecated_parent', new ChildDefinition('deprecated_parent'));
 
         $this->process($container);
 
@@ -313,7 +318,7 @@ class ResolveDefinitionTemplatesPassTest extends TestCase
             ->setDeprecated(true)
         ;
 
-        $container->setDefinition('decorated_deprecated_parent', new DefinitionDecorator('deprecated_parent'))
+        $container->setDefinition('decorated_deprecated_parent', new ChildDefinition('deprecated_parent'))
             ->setDeprecated(false)
         ;
 
@@ -322,6 +327,9 @@ class ResolveDefinitionTemplatesPassTest extends TestCase
         $this->assertFalse($container->getDefinition('decorated_deprecated_parent')->isDeprecated());
     }
 
+    /**
+     * @group legacy
+     */
     public function testProcessMergeAutowiringTypes()
     {
         $container = new ContainerBuilder();
@@ -332,7 +340,7 @@ class ResolveDefinitionTemplatesPassTest extends TestCase
         ;
 
         $container
-            ->setDefinition('child', new DefinitionDecorator('parent'))
+            ->setDefinition('child', new ChildDefinition('parent'))
             ->addAutowiringType('Bar')
         ;
 
@@ -351,7 +359,7 @@ class ResolveDefinitionTemplatesPassTest extends TestCase
 
         $container->register('parent', 'ParentClass');
         $container->setAlias('parent_alias', 'parent');
-        $container->setDefinition('child', new DefinitionDecorator('parent_alias'));
+        $container->setDefinition('child', new ChildDefinition('parent_alias'));
 
         $this->process($container);
 
@@ -359,6 +367,38 @@ class ResolveDefinitionTemplatesPassTest extends TestCase
         $this->assertSame('ParentClass', $def->getClass());
     }
 
+    public function testProcessSetsArguments()
+    {
+        $container = new ContainerBuilder();
+
+        $container->register('parent', 'ParentClass')->setArguments(array(0));
+        $container->setDefinition('child', (new ChildDefinition('parent'))->setArguments(array(
+            1,
+            'index_0' => 2,
+            'foo' => 3,
+        )));
+
+        $this->process($container);
+
+        $def = $container->getDefinition('child');
+        $this->assertSame(array(2, 1, 'foo' => 3), $def->getArguments());
+    }
+
+    public function testSetAutoconfiguredOnServiceIsParent()
+    {
+        $container = new ContainerBuilder();
+
+        $container->register('parent', 'stdClass')
+            ->setAutoconfigured(true)
+        ;
+
+        $container->setDefinition('child1', new ChildDefinition('parent'));
+
+        $this->process($container);
+
+        $this->assertFalse($container->getDefinition('child1')->isAutoconfigured());
+    }
+
     protected function process(ContainerBuilder $container)
     {
         $pass = new ResolveDefinitionTemplatesPass();