16
16
use Symfony \Component \DependencyInjection \ContainerBuilder ;
17
17
use Symfony \Component \DependencyInjection \Reference ;
18
18
use Symfony \Component \EventDispatcher \DependencyInjection \RegisterListenersPass ;
19
+ use Symfony \Component \EventDispatcher \EventSubscriberInterface ;
19
20
20
21
class RegisterListenersPassTest extends TestCase
21
22
{
@@ -37,10 +38,6 @@ public function testEventSubscriberWithoutInterface()
37
38
38
39
public function testValidEventSubscriber ()
39
40
{
40
- $ services = [
41
- 'my_event_subscriber ' => [0 => []],
42
- ];
43
-
44
41
$ builder = new ContainerBuilder ();
45
42
$ eventDispatcherDefinition = $ builder ->register ('event_dispatcher ' );
46
43
$ builder ->register ('my_event_subscriber ' , 'Symfony\Component\EventDispatcher\Tests\DependencyInjection\SubscriberService ' )
@@ -62,6 +59,30 @@ public function testValidEventSubscriber()
62
59
$ this ->assertEquals ($ expectedCalls , $ eventDispatcherDefinition ->getMethodCalls ());
63
60
}
64
61
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
+
65
86
public function testAbstractEventListener ()
66
87
{
67
88
$ this ->expectException ('InvalidArgumentException ' );
@@ -175,9 +196,33 @@ public function testInvokableEventListener()
175
196
];
176
197
$ this ->assertEquals ($ expectedCalls , $ definition ->getMethodCalls ());
177
198
}
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
+ }
178
223
}
179
224
180
- class SubscriberService implements \ Symfony \ Component \ EventDispatcher \ EventSubscriberInterface
225
+ class SubscriberService implements EventSubscriberInterface
181
226
{
182
227
public static function getSubscribedEvents (): array
183
228
{
@@ -197,3 +242,17 @@ public function onEvent()
197
242
{
198
243
}
199
244
}
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