|
18 | 18 | use Symfony\Component\DependencyInjection\ContainerBuilder;
|
19 | 19 | use Symfony\Component\DependencyInjection\Reference;
|
20 | 20 | use Symfony\Component\DependencyInjection\ServiceLocator;
|
| 21 | +use Symfony\Component\Messenger\Command\ConsumeMessagesCommand; |
21 | 22 | use Symfony\Component\Messenger\Command\DebugCommand;
|
22 | 23 | use Symfony\Component\Messenger\DataCollector\MessengerDataCollector;
|
23 | 24 | use Symfony\Component\Messenger\DependencyInjection\MessengerPass;
|
| 25 | +use Symfony\Component\Messenger\Envelope; |
24 | 26 | use Symfony\Component\Messenger\Handler\ChainHandler;
|
25 | 27 | use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
|
26 | 28 | use Symfony\Component\Messenger\Handler\MessageSubscriberInterface;
|
|
33 | 35 | use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
|
34 | 36 | use Symfony\Component\Messenger\Tests\Fixtures\DummyQuery;
|
35 | 37 | use Symfony\Component\Messenger\Tests\Fixtures\DummyQueryHandler;
|
36 |
| -use Symfony\Component\Messenger\Tests\Fixtures\DummyReceiver; |
37 | 38 | use Symfony\Component\Messenger\Tests\Fixtures\MultipleBusesMessage;
|
38 | 39 | use Symfony\Component\Messenger\Tests\Fixtures\MultipleBusesMessageHandler;
|
39 | 40 | use Symfony\Component\Messenger\Tests\Fixtures\SecondMessage;
|
40 | 41 | use Symfony\Component\Messenger\Transport\AmqpExt\AmqpReceiver;
|
41 | 42 | use Symfony\Component\Messenger\Transport\AmqpExt\AmqpSender;
|
| 43 | +use Symfony\Component\Messenger\Transport\ReceiverInterface; |
42 | 44 |
|
43 | 45 | class MessengerPassTest extends TestCase
|
44 | 46 | {
|
@@ -235,6 +237,24 @@ public function testItRegistersReceiversWithoutTagName()
|
235 | 237 | $this->assertEquals(array(AmqpReceiver::class => new Reference(AmqpReceiver::class)), $container->getDefinition('messenger.receiver_locator')->getArgument(0));
|
236 | 238 | }
|
237 | 239 |
|
| 240 | + public function testItRegistersMultipleReceiversAndSetsTheReceiverNamesOnTheCommand() |
| 241 | + { |
| 242 | + $container = $this->getContainerBuilder(); |
| 243 | + $container->register('console.command.messenger_consume_messages', ConsumeMessagesCommand::class)->setArguments(array( |
| 244 | + new Reference('message_bus'), |
| 245 | + new Reference('messenger.receiver_locator'), |
| 246 | + null, |
| 247 | + null, |
| 248 | + )); |
| 249 | + |
| 250 | + $container->register(AmqpReceiver::class, AmqpReceiver::class)->addTag('messenger.receiver', array('alias' => 'amqp')); |
| 251 | + $container->register(DummyReceiver::class, DummyReceiver::class)->addTag('messenger.receiver', array('alias' => 'dummy')); |
| 252 | + |
| 253 | + (new MessengerPass())->process($container); |
| 254 | + |
| 255 | + $this->assertSame(array('amqp', 'dummy'), $container->getDefinition('console.command.messenger_consume_messages')->getArgument(3)); |
| 256 | + } |
| 257 | + |
238 | 258 | public function testItRegistersSenders()
|
239 | 259 | {
|
240 | 260 | $container = $this->getContainerBuilder();
|
@@ -567,6 +587,20 @@ public function __invoke(DummyMessage $message): void
|
567 | 587 | }
|
568 | 588 | }
|
569 | 589 |
|
| 590 | +class DummyReceiver implements ReceiverInterface |
| 591 | +{ |
| 592 | + public function receive(callable $handler): void |
| 593 | + { |
| 594 | + for ($i = 0; $i < 3; ++$i) { |
| 595 | + $handler(Envelope::wrap(new DummyMessage("Dummy $i"))); |
| 596 | + } |
| 597 | + } |
| 598 | + |
| 599 | + public function stop(): void |
| 600 | + { |
| 601 | + } |
| 602 | +} |
| 603 | + |
570 | 604 | class InvalidReceiver
|
571 | 605 | {
|
572 | 606 | }
|
|
0 commit comments