You are here

public function TaggedHandlersPassTest::testProcessPriority in Drupal 8

Same name and namespace in other branches
  1. 9 core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/TaggedHandlersPassTest.php \Drupal\Tests\Core\DependencyInjection\Compiler\TaggedHandlersPassTest::testProcessPriority()

Tests handler priority sorting.

@covers ::process

File

core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/TaggedHandlersPassTest.php, line 160
Contains \Drupal\Tests\Core\DependencyInjection\Compiler\TaggedHandlersPassTest.

Class

TaggedHandlersPassTest
@coversDefaultClass \Drupal\Core\DependencyInjection\Compiler\TaggedHandlersPass @group DependencyInjection

Namespace

Drupal\Tests\Core\DependencyInjection\Compiler

Code

public function testProcessPriority() {
  $container = $this
    ->buildContainer();
  $container
    ->register('consumer_id', __NAMESPACE__ . '\\ValidConsumer')
    ->addTag('service_collector');
  $container
    ->register('handler1', __NAMESPACE__ . '\\ValidHandler')
    ->addTag('consumer_id');
  $container
    ->register('handler2', __NAMESPACE__ . '\\ValidHandler')
    ->addTag('consumer_id', [
    'priority' => 10,
  ]);
  $handler_pass = new TaggedHandlersPass();
  $handler_pass
    ->process($container);
  $method_calls = $container
    ->getDefinition('consumer_id')
    ->getMethodCalls();
  $this
    ->assertCount(2, $method_calls);
  $this
    ->assertEquals(new Reference('handler2'), $method_calls[0][1][0]);
  $this
    ->assertEquals(10, $method_calls[0][1][1]);
  $this
    ->assertEquals(new Reference('handler1'), $method_calls[1][1][0]);
  $this
    ->assertEquals(0, $method_calls[1][1][1]);
}