You are here

public function SectionComponentTest::testToRenderArray in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/layout_builder/tests/src/Unit/SectionComponentTest.php \Drupal\Tests\layout_builder\Unit\SectionComponentTest::testToRenderArray()
  2. 10 core/modules/layout_builder/tests/src/Unit/SectionComponentTest.php \Drupal\Tests\layout_builder\Unit\SectionComponentTest::testToRenderArray()

@covers ::toRenderArray

File

core/modules/layout_builder/tests/src/Unit/SectionComponentTest.php, line 26

Class

SectionComponentTest
@coversDefaultClass \Drupal\layout_builder\SectionComponent @group layout_builder

Namespace

Drupal\Tests\layout_builder\Unit

Code

public function testToRenderArray() {
  $existing_block = $this
    ->prophesize(BlockPluginInterface::class);
  $existing_block
    ->getPluginId()
    ->willReturn('block_plugin_id');
  $block_manager = $this
    ->prophesize(BlockManagerInterface::class);
  $block_manager
    ->createInstance('some_block_id', [
    'id' => 'some_block_id',
  ])
    ->willReturn($existing_block
    ->reveal());

  // Imitate an event subscriber by setting a resulting build on the event.
  $event_dispatcher = $this
    ->prophesize(EventDispatcherInterface::class);
  $event_dispatcher
    ->dispatch(LayoutBuilderEvents::SECTION_COMPONENT_BUILD_RENDER_ARRAY, Argument::type(SectionComponentBuildRenderArrayEvent::class))
    ->shouldBeCalled()
    ->will(function ($args) {

    /** @var \Drupal\layout_builder\Event\SectionComponentBuildRenderArrayEvent $event */
    $event = $args[1];
    $event
      ->setBuild([
      '#markup' => $event
        ->getPlugin()
        ->getPluginId(),
    ]);
    return;
  });
  $layout_plugin = $this
    ->prophesize(LayoutInterface::class);
  $layout_plugin
    ->build(Argument::type('array'))
    ->willReturnArgument(0);
  $layout_manager = $this
    ->prophesize(LayoutPluginManagerInterface::class);
  $layout_manager
    ->createInstance('layout_onecol', [])
    ->willReturn($layout_plugin
    ->reveal());
  $container = new ContainerBuilder();
  $container
    ->set('plugin.manager.block', $block_manager
    ->reveal());
  $container
    ->set('event_dispatcher', $event_dispatcher
    ->reveal());
  $container
    ->set('plugin.manager.core.layout', $layout_manager
    ->reveal());
  \Drupal::setContainer($container);
  $expected = [
    '#cache' => [
      'contexts' => [],
      'tags' => [],
      'max-age' => -1,
    ],
    '#markup' => 'block_plugin_id',
  ];
  $component = new SectionComponent('some-uuid', 'some-region', [
    'id' => 'some_block_id',
  ]);
  $result = $component
    ->toRenderArray();
  $this
    ->assertEquals($expected, $result);
}