1616use Symfony \Component \DependencyInjection \ContainerBuilder ;
1717use Symfony \Component \DependencyInjection \Reference ;
1818use Symfony \Component \EventDispatcher \DependencyInjection \RegisterListenersPass ;
19+ use Symfony \Component \EventDispatcher \EventSubscriberInterface ;
1920
2021class RegisterListenersPassTest extends TestCase
2122{
@@ -37,10 +38,6 @@ public function testEventSubscriberWithoutInterface()
3738
3839 public function testValidEventSubscriber ()
3940 {
40- $ services = [
41- 'my_event_subscriber ' => [0 => []],
42- ];
43-
4441 $ builder = new ContainerBuilder ();
4542 $ eventDispatcherDefinition = $ builder ->register ('event_dispatcher ' );
4643 $ builder ->register ('my_event_subscriber ' , 'Symfony\Component\EventDispatcher\Tests\DependencyInjection\SubscriberService ' )
@@ -62,6 +59,30 @@ public function testValidEventSubscriber()
6259 $ this ->assertEquals ($ expectedCalls , $ eventDispatcherDefinition ->getMethodCalls ());
6360 }
6461
62+ public function testAliasedEventSubscriber (): void
63+ {
64+ $ builder = new ContainerBuilder ();
65+ $ builder ->setParameter ('event_dispatcher.event_aliases ' , [AliasedEvent::class => 'aliased_event ' ]);
66+ $ builder ->register ('event_dispatcher ' );
67+ $ builder ->register ('my_event_subscriber ' , AliasedSubscriber::class)
68+ ->addTag ('kernel.event_subscriber ' );
69+
70+ $ registerListenersPass = new RegisterListenersPass ();
71+ $ registerListenersPass ->process ($ builder );
72+
73+ $ expectedCalls = [
74+ [
75+ 'addListener ' ,
76+ [
77+ 'aliased_event ' ,
78+ [new ServiceClosureArgument (new Reference ('my_event_subscriber ' )), 'onAliasedEvent ' ],
79+ 0 ,
80+ ],
81+ ],
82+ ];
83+ $ this ->assertEquals ($ expectedCalls , $ builder ->getDefinition ('event_dispatcher ' )->getMethodCalls ());
84+ }
85+
6586 public function testAbstractEventListener ()
6687 {
6788 $ this ->expectException ('InvalidArgumentException ' );
@@ -175,9 +196,33 @@ public function testInvokableEventListener()
175196 ];
176197 $ this ->assertEquals ($ expectedCalls , $ definition ->getMethodCalls ());
177198 }
199+
200+ public function testAliasedEventListener (): void
201+ {
202+ $ container = new ContainerBuilder ();
203+ $ container ->setParameter ('event_dispatcher.event_aliases ' , [AliasedEvent::class => 'aliased_event ' ]);
204+ $ container ->register ('foo ' , InvokableListenerService::class)->addTag ('kernel.event_listener ' , ['event ' => AliasedEvent::class, 'method ' => 'onEvent ' ]);
205+ $ container ->register ('event_dispatcher ' );
206+
207+ $ registerListenersPass = new RegisterListenersPass ();
208+ $ registerListenersPass ->process ($ container );
209+
210+ $ definition = $ container ->getDefinition ('event_dispatcher ' );
211+ $ expectedCalls = [
212+ [
213+ 'addListener ' ,
214+ [
215+ 'aliased_event ' ,
216+ [new ServiceClosureArgument (new Reference ('foo ' )), 'onEvent ' ],
217+ 0 ,
218+ ],
219+ ],
220+ ];
221+ $ this ->assertEquals ($ expectedCalls , $ definition ->getMethodCalls ());
222+ }
178223}
179224
180- class SubscriberService implements \ Symfony \ Component \ EventDispatcher \ EventSubscriberInterface
225+ class SubscriberService implements EventSubscriberInterface
181226{
182227 public static function getSubscribedEvents ()
183228 {
@@ -197,3 +242,17 @@ public function onEvent()
197242 {
198243 }
199244}
245+
246+ final class AliasedSubscriber implements EventSubscriberInterface
247+ {
248+ public static function getSubscribedEvents (): array
249+ {
250+ return [
251+ AliasedEvent::class => 'onAliasedEvent ' ,
252+ ];
253+ }
254+ }
255+
256+ final class AliasedEvent
257+ {
258+ }
0 commit comments