@@ -274,6 +274,23 @@ public function testItRegistersSenderWithoutTagName()
274
274
$ this ->assertEquals (array (AmqpSender::class => new Reference (AmqpSender::class)), $ container ->getDefinition ('messenger.sender_locator ' )->getArgument (0 ));
275
275
}
276
276
277
+ public function testItShouldNotThrowIfGeneratorIsReturnedInsteadOfArray ()
278
+ {
279
+ $ container = $ this ->getContainerBuilder ($ busId = 'message_bus ' );
280
+ $ container
281
+ ->register (HandlerWithGenerators::class, HandlerWithGenerators::class)
282
+ ->addTag ('messenger.message_handler ' )
283
+ ;
284
+
285
+ (new MessengerPass ())->process ($ container );
286
+
287
+ $ handlerLocatorDefinition = $ container ->getDefinition ($ container ->getDefinition ("$ busId.messenger.handler_resolver " )->getArgument (0 ));
288
+ $ handlerMapping = $ handlerLocatorDefinition ->getArgument (0 );
289
+
290
+ $
8000
this ->assertArrayHasKey ('handler. ' .DummyMessage::class, $ handlerMapping );
291
+ $ this ->assertArrayHasKey ('handler. ' .SecondMessage::class, $ handlerMapping );
292
+ }
293
+
277
294
/**
278
295
* @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException
279
296
* @expectedExceptionMessage Invalid sender "app.messenger.sender": class "Symfony\Component\Messenger\Tests\DependencyInjection\InvalidSender" must implement interface "Symfony\Component\Messenger\Transport\SenderInterface".
@@ -685,6 +702,23 @@ public function __invoke()
685
702
}
686
703
}
687
704
705
+ class HandlerWithGenerators implements MessageSubscriberInterface
706
+ {
707
+ public static function getHandledMessages (): iterable
708
+ {
709
+ yield DummyMessage::class => 'dummyMethod ' ;
710
+ yield SecondMessage::class => 'secondMessage ' ;
711
+ }
712
+
713
+ public function dummyMethod ()
714
+ {
715
+ }
716
+
717
+ public function secondMessage ()
718
+ {
719
+ }
720
+ }
721
+
688
722
class UselessMiddleware implements MiddlewareInterface
689
723
{
690
724
public function handle ($ message , callable $ next )
0 commit comments