You are here

public function OptimizedPhpArrayDumperTest::testGetServiceDefinitionWithReferenceToAlias in Drupal 9

Same name and namespace in other branches
  1. 8 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 486
Contains \Drupal\Tests\Component\DependencyInjection\Dumper\OptimizedPhpArrayDumperTest.

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.');
}