use PHPUnit\Framework\TestCase;
use Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher;
-use Symfony\Component\EventDispatcher\Debug\WrappedListener;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\EventDispatcher\EventDispatcher;
$this->assertSame(123, $tdispatcher->getListenerPriority('foo', $listeners[0]));
}
- public function testGetListenerPriorityReturnsZeroWhenWrappedMethodDoesNotExist()
+ public function testGetListenerPriorityWhileDispatching()
{
- $dispatcher = $this->getMockBuilder('Symfony\Component\EventDispatcher\EventDispatcherInterface')->getMock();
- $traceableEventDispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
- $traceableEventDispatcher->addListener('foo', function () {}, 123);
- $listeners = $traceableEventDispatcher->getListeners('foo');
+ $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
+ $priorityWhileDispatching = null;
- $this->assertSame(0, $traceableEventDispatcher->getListenerPriority('foo', $listeners[0]));
+ $listener = function () use ($tdispatcher, &$priorityWhileDispatching, &$listener) {
+ $priorityWhileDispatching = $tdispatcher->getListenerPriority('bar', $listener);
+ };
+
+ $tdispatcher->addListener('bar', $listener, 5);
+ $tdispatcher->dispatch('bar');
+ $this->assertSame(5, $priorityWhileDispatching);
}
public function testAddRemoveSubscriber()
$this->assertCount(0, $dispatcher->getListeners('foo'));
}
- /**
- * @dataProvider isWrappedDataProvider
- *
- * @param bool $isWrapped
- */
- public function testGetCalledListeners($isWrapped)
+ public function testGetCalledListeners()
{
- $dispatcher = new EventDispatcher();
- $stopWatch = new Stopwatch();
- $tdispatcher = new TraceableEventDispatcher($dispatcher, $stopWatch);
-
- $listener = function () {};
- if ($isWrapped) {
- $listener = new WrappedListener($listener, 'foo', $stopWatch, $dispatcher);
- }
-
- $tdispatcher->addListener('foo', $listener, 5);
+ $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
+ $tdispatcher->addListener('foo', function () {}, 5);
+ $listeners = $tdispatcher->getNotCalledListeners();
+ $this->assertArrayHasKey('data', $listeners['foo.closure']);
+ unset($listeners['foo.closure']['data']);
$this->assertEquals(array(), $tdispatcher->getCalledListeners());
- $this->assertEquals(array('foo.closure' => array('event' => 'foo', 'type' => 'Closure', 'pretty' => 'closure', 'priority' => 5)), $tdispatcher->getNotCalledListeners());
+ $this->assertEquals(array('foo.closure' => array('event' => 'foo', 'pretty' => 'closure', 'priority' => 5)), $listeners);
$tdispatcher->dispatch('foo');
- $this->assertEquals(array('foo.closure' => array('event' => 'foo', 'type' => 'Closure', 'pretty' => 'closure', 'priority' => 5)), $tdispatcher->getCalledListeners());
+ $listeners = $tdispatcher->getCalledListeners();
+ unset($listeners['foo.closure']['data']);
+ $this->assertEquals(array('foo.closure' => array('event' => 'foo', 'pretty' => 'closure', 'priority' => 5)), $listeners);
$this->assertEquals(array(), $tdispatcher->getNotCalledListeners());
}
- public function isWrappedDataProvider()
- {
- return array(
- array(false),
- array(true),
- );
- }
-
public function testGetCalledListenersNested()
{
$tdispatcher = null;
$tdispatcher->addListener('foo', $listener1 = function () {});
$tdispatcher->addListener('foo', $listener2 = function () {});
- $logger->expects($this->at(0))->method('debug')->with('Notified event "foo" to listener "closure".');
- $logger->expects($this->at(1))->method('debug')->with('Notified event "foo" to listener "closure".');
+ $logger->expects($this->at(0))->method('debug')->with('Notified event "{event}" to listener "{listener}".', array('event' => 'foo', 'listener' => 'closure'));
+ $logger->expects($this->at(1))->method('debug')->with('Notified event "{event}" to listener "{listener}".', array('event' => 'foo', 'listener' => 'closure'));
$tdispatcher->dispatch('foo');
}
$tdispatcher->addListener('foo', $listener1 = function (Event $event) { $event->stopPropagation(); });
$tdispatcher->addListener('foo', $listener2 = function () {});
- $logger->expects($this->at(0))->method('debug')->with('Notified event "foo" to listener "closure".');
- $logger->expects($this->at(1))->method('debug')->with('Listener "closure" stopped propagation of the event "foo".');
- $logger->expects($this->at(2))->method('debug')->with('Listener "closure" was not called for event "foo".');
+ $logger->expects($this->at(0))->method('debug')->with('Notified event "{event}" to listener "{listener}".', array('event' => 'foo', 'listener' => 'closure'));
+ $logger->expects($this->at(1))->method('debug')->with('Listener "{listener}" stopped propagation of the event "{event}".', array('event' => 'foo', 'listener' => 'closure'));
+ $logger->expects($this->at(2))->method('debug')->with('Listener "{listener}" was not called for event "{event}".', array('event' => 'foo', 'listener' => 'closure'));
$tdispatcher->dispatch('foo');
}