$handler_pass->process($container);
}
+ /**
+ * Tests a required consumer with no handlers.
+ *
+ * @covers ::process
+ * @covers ::processServiceIdCollectorPass
+ */
+ public function testIdCollectorProcessRequiredHandlers() {
+ $this->setExpectedException(LogicException::class, "At least one service tagged with 'consumer_id' is required.");
+ $container = $this->buildContainer();
+ $container
+ ->register('consumer_id', __NAMESPACE__ . '\ValidConsumer')
+ ->addTag('service_id_collector', [
+ 'required' => TRUE,
+ ]);
+
+ $handler_pass = new TaggedHandlersPass();
+ $handler_pass->process($container);
+ }
+
/**
* Tests consumer with missing interface in non-production environment.
*
$this->assertCount(2, $method_calls);
}
+ /**
+ * Tests one consumer and two handlers with service ID collection.
+ *
+ * @covers ::process
+ */
+ public function testserviceIdProcess() {
+ $container = $this->buildContainer();
+ $container
+ ->register('consumer_id', __NAMESPACE__ . '\ValidConsumer')
+ ->addTag('service_id_collector');
+
+ $container
+ ->register('handler1', __NAMESPACE__ . '\ValidHandler')
+ ->addTag('consumer_id');
+ $container
+ ->register('handler2', __NAMESPACE__ . '\ValidHandler')
+ ->addTag('consumer_id');
+
+ $handler_pass = new TaggedHandlersPass();
+ $handler_pass->process($container);
+
+ $arguments = $container->getDefinition('consumer_id')->getArguments();
+ $this->assertCount(1, $arguments);
+ $this->assertCount(2, $arguments[0]);
+ }
+
/**
* Tests handler priority sorting.
*
$this->assertEquals(0, $method_calls[1][1][1]);
}
+ /**
+ * Tests handler priority sorting for service ID collection.
+ *
+ * @covers ::process
+ */
+ public function testserviceIdProcessPriority() {
+ $container = $this->buildContainer();
+ $container
+ ->register('consumer_id', __NAMESPACE__ . '\ValidConsumer')
+ ->addTag('service_id_collector');
+
+ $container
+ ->register('handler1', __NAMESPACE__ . '\ValidHandler')
+ ->addTag('consumer_id');
+ $container
+ ->register('handler2', __NAMESPACE__ . '\ValidHandler')
+ ->addTag('consumer_id', [
+ 'priority' => 20,
+ ]);
+ $container
+ ->register('handler3', __NAMESPACE__ . '\ValidHandler')
+ ->addTag('consumer_id', [
+ 'priority' => 10,
+ ]);
+
+ $handler_pass = new TaggedHandlersPass();
+ $handler_pass->process($container);
+
+ $arguments = $container->getDefinition('consumer_id')->getArguments();
+ $this->assertCount(1, $arguments);
+ $this->assertSame(['handler2', 'handler3', 'handler1'], $arguments[0]);
+ }
+
/**
* Tests consumer method without priority parameter.
*