function OptimizedPhpArrayDumperTest::testGetServiceDefinitionWithReferenceToAlias

Same name in other branches
  1. 8.9.x core/tests/Drupal/Tests/Component/DependencyInjection/Dumper/OptimizedPhpArrayDumperTest.php \Drupal\Tests\Component\DependencyInjection\Dumper\OptimizedPhpArrayDumperTest::testGetServiceDefinitionWithReferenceToAlias()
  2. 10 core/tests/Drupal/Tests/Component/DependencyInjection/Dumper/OptimizedPhpArrayDumperTest.php \Drupal\Tests\Component\DependencyInjection\Dumper\OptimizedPhpArrayDumperTest::testGetServiceDefinitionWithReferenceToAlias()
  3. 11.x core/tests/Drupal/Tests/Component/DependencyInjection/Dumper/OptimizedPhpArrayDumperTest.php \Drupal\Tests\Component\DependencyInjection\Dumper\OptimizedPhpArrayDumperTest::testGetServiceDefinitionWithReferenceToAlias()

Tests that references to aliases work correctly.

@covers ::getReferenceCall

@dataProvider publicPrivateDataProvider

File

core/tests/Drupal/Tests/Component/DependencyInjection/Dumper/OptimizedPhpArrayDumperTest.php, line 478

Class

OptimizedPhpArrayDumperTest
@coversDefaultClass \Drupal\Component\DependencyInjection\Dumper\OptimizedPhpArrayDumper @group DependencyInjection

Namespace

Drupal\Tests\Component\DependencyInjection\Dumper

Code

public function testGetServiceDefinitionWithReferenceToAlias($public) {
    $bar_definition = new Definition('\\stdClass');
    $bar_definition_php_array = [
        'class' => '\\stdClass',
    ];
    if ($public) {
        $bar_definition->setPublic(TRUE);
    }
    else {
        $bar_definition->setPublic(FALSE);
        $bar_definition_php_array['public'] = FALSE;
    }
    $bar_definition_php_array['arguments_count'] = 0;
    $services['bar'] = $bar_definition;
    $aliases['bar.alias'] = 'bar';
    $foo = new Definition('\\stdClass');
    $foo->setPublic(TRUE);
    $foo->addArgument(new Reference('bar.alias'));
    $services['foo'] = $foo;
    $this->containerBuilder
        ->getAliases()
        ->willReturn($aliases);
    $this->containerBuilder
        ->getDefinitions()
        ->willReturn($services);
    $this->containerBuilder
        ->getDefinition('bar')
        ->willReturn($bar_definition);
    $dump = $this->dumper
        ->getArray();
    if ($public) {
        $service_definition = $this->getServiceCall('bar');
    }
    else {
        $service_definition = $this->getPrivateServiceCall('bar', $bar_definition_php_array, TRUE);
    }
    $data = [
        'class' => '\\stdClass',
        'arguments' => $this->getCollection([
            $service_definition,
        ]),
        'arguments_count' => 1,
    ];
    $this->assertEquals($this->serializeDefinition($data), $dump['services']['foo'], 'Expected definition matches dump.');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.