function OptimizedPhpArrayDumperTest::testGetServiceDefinitionWithReferenceToAlias

Same name and namespace in other branches
  1. 9 core/tests/Drupal/Tests/Component/DependencyInjection/Dumper/OptimizedPhpArrayDumperTest.php \Drupal\Tests\Component\DependencyInjection\Dumper\OptimizedPhpArrayDumperTest::testGetServiceDefinitionWithReferenceToAlias()
  2. 8.9.x 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 505

Class

OptimizedPhpArrayDumperTest
@coversDefaultClass \Drupal\Component\DependencyInjection\Dumper\OptimizedPhpArrayDumper[[api-linebreak]] @group DependencyInjection

Namespace

Drupal\Tests\Component\DependencyInjection\Dumper

Code

public function testGetServiceDefinitionWithReferenceToAlias($public) : void {
  $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 = static::getServiceCall('bar');
  }
  else {
    $service_definition = static::getPrivateServiceCall('bar', $bar_definition_php_array, TRUE);
  }
  $data = [
    'class' => '\\stdClass',
    'arguments' => static::getCollection([
      $service_definition,
    ]),
    'arguments_count' => 1,
  ];
  $this->assertEquals(static::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.