You are here

public function ContainerAwareEventDispatcherTest::testDispatchWithCallables in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/tests/Drupal/Tests/Component/EventDispatcher/ContainerAwareEventDispatcherTest.php \Drupal\Tests\Component\EventDispatcher\ContainerAwareEventDispatcherTest::testDispatchWithCallables()

File

core/tests/Drupal/Tests/Component/EventDispatcher/ContainerAwareEventDispatcherTest.php, line 74
Contains \Drupal\Tests\Component\EventDispatcher\ContainerAwareEventDispatcherTest.

Class

ContainerAwareEventDispatcherTest
Unit tests for the ContainerAwareEventDispatcher.

Namespace

Drupal\Tests\Component\EventDispatcher

Code

public function testDispatchWithCallables() {

  // When passing in callables exclusively as listeners into the event
  // dispatcher constructor, the event dispatcher must not attempt to
  // resolve any services.
  $container = $this
    ->getMock('Symfony\\Component\\DependencyInjection\\IntrospectableContainerInterface');
  $container
    ->expects($this
    ->never())
    ->method($this
    ->anything());
  $firstListener = new CallableClass();
  $secondListener = function () {
  };
  $thirdListener = array(
    new TestEventListener(),
    'preFoo',
  );
  $listeners = array(
    'test_event' => array(
      0 => array(
        array(
          'callable' => $firstListener,
        ),
        array(
          'callable' => $secondListener,
        ),
        array(
          'callable' => $thirdListener,
        ),
      ),
    ),
  );
  $dispatcher = new ContainerAwareEventDispatcher($container, $listeners);
  $dispatcher
    ->dispatch('test_event');
  $this
    ->assertTrue($thirdListener[0]->preFooInvoked);
}