/**
  * outputListeners
  *
  * @param OutputInterface $output       Output
  * @param array           $options      array of options from the console
  *
  */
 protected function outputListeners(OutputInterface $output, $options = array())
 {
     $fetcher = new ListenerFetcher($this->getContainerBuilder());
     $filter = new ListenerFilter();
     $listeners = $fetcher->fetchListeners($options['show-private']);
     if ($options['event']) {
         $listeners = $filter->filterByEvent($options['event'], $listeners, $options['order-desc']);
     }
     if ($options['show-listeners']) {
         $listeners = $filter->fetchListeners($listeners);
     }
     if ($options['show-subscribers']) {
         $listeners = $filter->fetchSubscribers($listeners);
     }
     $label = '<comment>Public</comment> (services) listeners';
     if ($options['show-private']) {
         $label = '<comment>Public</comment> and <comment>private</comment> (services) listeners';
     }
     $output->writeln($this->getHelper('formatter')->formatSection('container', $label));
     $table = $this->getHelperSet()->get('table');
     $table->setHeaders(array('Name', 'Event', 'Method', 'Priority', 'Type', 'Class Name'));
     $table->setCellRowFormat('<fg=white>%s</fg=white>');
     $table->setRows($listeners);
     $table->render($output);
 }
 public function testFetchListeners()
 {
     $defMock = $this->getMockBuilder('Symfony\\Component\\DependencyInjection\\Definition')->disableOriginalConstructor()->getMock();
     $defMock->expects($this->at(0))->method('getTags')->will($this->returnValue(array('test0.event_listener' => array('event' => 'test.event'))));
     $defMock->expects($this->at(1))->method('getTags')->will($this->returnValue(array('test1.event_listener' => array('event' => 'test.event'))));
     $defMock->expects($this->at(2))->method('getTags')->will($this->returnValue(array('test2.event_listener' => array('event' => 'test.event'))));
     $defMock->expects($this->exactly(3))->method('isPublic')->will($this->returnValue(true));
     $defMock->expects($this->any())->method('getClass')->will($this->returnValue('Egulias\\ListenersDebugCommandBundle\\Tests\\Listener\\Listener'));
     $containerMock = $this->getMockBuilder('Symfony\\Component\\DependencyInjection\\ContainerBuilder')->disableOriginalConstructor()->getMock();
     $containerMock->expects($this->once())->method('getDefinitions')->will($this->returnValue(array($defMock, $defMock, $defMock)));
     $containerMock->expects($this->exactly(3))->method('findTaggedServiceIds')->will($this->returnValue(array('test0.event_listener' => array(array('event' => 'test.event', 'method' => 'onTestEvent', 'priority' => 4)), 'test1.event_listener' => array(array('event' => 'test.event', 'method' => 'onTestEvent', 'priority' => 2)), 'test2.event_listener' => array(array()))));
     $containerMock->expects($this->any())->method('hasDefinition')->will($this->returnValue(true));
     $containerMock->expects($this->exactly(3))->method('getDefinition')->will($this->returnValue($defMock));
     $fetcher = new ListenerFetcher($containerMock);
     $listeners = $fetcher->fetchListeners();
     $this->assertCount(3, $listeners);
     $this->assertEquals('test.event', $listeners[0][1]);
     $this->assertEquals('listener', $listeners[0][4]);
     $this->assertEquals('subscriber', $listeners[2][4]);
     foreach ($listeners as $listener) {
         $this->assertCount(6, $listener);
         $this->assertEquals('test.event', $listener[1]);
         $this->assertEquals('onTestEvent', $listener[2]);
         $this->assertNotEquals(0, $listener[3]);
     }
 }