You are here

public function BlockDisplayVariantTest::testBlockDisplayVariantEvents in Chaos Tool Suite (ctools) 8.3

Tests that events are fired when manipulating a block variant.

File

tests/src/Kernel/BlockDisplayVariantTest.php, line 26

Class

BlockDisplayVariantTest
@coversDefaultClass \Drupal\ctools\Plugin\DisplayVariant\BlockDisplayVariant @group CTools

Namespace

Drupal\Tests\ctools\Kernel

Code

public function testBlockDisplayVariantEvents() {

  /** @var \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher */
  $event_dispatcher = $this
    ->prophesize(EventDispatcherInterface::class);

  // Swap in a mock event dispatcher so we can spy on method calls.
  $this->container
    ->set('event_dispatcher', $event_dispatcher
    ->reveal());
  $variant = BlockDisplayVariant::create($this->container, [], 'foobar', []);

  // Set up the expected calls to the event dispatcher.
  $event = Argument::type(BlockVariantEvent::class);
  $event_dispatcher
    ->dispatch(BlockVariantEvents::ADD_BLOCK, $event)
    ->shouldBeCalled();
  $event_dispatcher
    ->dispatch(BlockVariantEvents::UPDATE_BLOCK, $event)
    ->shouldBeCalled();
  $event_dispatcher
    ->dispatch(BlockVariantEvents::DELETE_BLOCK, $event)
    ->shouldBeCalled();
  $block_id = $variant
    ->addBlock([
    'id' => 'system_powered_by_block',
  ]);
  $variant
    ->updateBlock($block_id, []);
  $variant
    ->removeBlock($block_id);
}