File tree Expand file tree Collapse file tree 2 files changed +42
-2
lines changed Expand file tree Collapse file tree 2 files changed +42
-2
lines changed Original file line number Diff line number Diff line change 1313
1414class ListenerProviderAggregate implements ListenerProviderInterface
1515{
16+ /**
17+ * @var ListenerProviderInterface[]
18+ */
1619 private $ providers = [];
1720
1821 public function getListenersForEvent (object $ event ) : iterable
1922 {
20- foreach ($ providers as $ provider ) {
21- yield from $ provider ;
23+ foreach ($ this -> providers as $ provider ) {
24+ yield from $ provider-> getListenersForEvent ( $ event ) ;
2225 }
2326 }
2427
Original file line number Diff line number Diff line change 1+ <?php
2+ /**
3+ * @see https://github.com/phly/phly-event-dispatcher for the canonical source repository
4+ * @copyright Copyright (c) 2018-2019 Matthew Weier O'Phinney (https:/mwop.net)
5+ * @license https://github.com/phly/phly-event-dispatcher/blob/master/LICENSE.md New BSD License
6+ */
7+
8+ declare (strict_types=1 );
9+
10+ namespace PhlyTest \EventDispatcher \ListenerProvider ;
11+
12+ use Phly \EventDispatcher \ListenerProvider \ListenerProviderAggregate ;
13+ use PHPUnit \Framework \TestCase ;
14+ use Psr \EventDispatcher \ListenerProviderInterface ;
15+ use PhlyTest \EventDispatcher \TestAsset \TestEvent ;
16+
17+ class ListenerProviderAggregateTest extends TestCase
18+ {
19+ public function testAggregateYieldsFromAttachedProviders ()
20+ {
21+ $ event = new TestEvent ();
22+ $ listener = function (TestEvent $ event ) {
23+ };
24+
25+ $ provider = $ this ->prophesize (ListenerProviderInterface::class);
26+ $ provider
27+ ->getListenersForEvent ($ event )
28+ ->willReturn ([$ listener ]);
29+
30+ $ aggregate = new ListenerProviderAggregate ();
31+ $ aggregate ->attach ($ provider ->reveal ());
32+
33+ $ listeners = iterator_to_array ($ aggregate ->getListenersForEvent ($ event ));
34+
35+ $ this ->assertSame ([$ listener ], $ listeners );
36+ }
37+ }
You can’t perform that action at this time.
0 commit comments