function BlockPageVariantTest::testBuild

Same name and namespace in other branches
  1. 9 core/modules/block/tests/src/Unit/Plugin/DisplayVariant/BlockPageVariantTest.php \Drupal\Tests\block\Unit\Plugin\DisplayVariant\BlockPageVariantTest::testBuild()
  2. 8.9.x core/modules/block/tests/src/Unit/Plugin/DisplayVariant/BlockPageVariantTest.php \Drupal\Tests\block\Unit\Plugin\DisplayVariant\BlockPageVariantTest::testBuild()
  3. 10 core/modules/block/tests/src/Unit/Plugin/DisplayVariant/BlockPageVariantTest.php \Drupal\Tests\block\Unit\Plugin\DisplayVariant\BlockPageVariantTest::testBuild()

Tests the building of a full page variant.

@covers ::build

@dataProvider providerBuild

File

core/modules/block/tests/src/Unit/Plugin/DisplayVariant/BlockPageVariantTest.php, line 207

Class

BlockPageVariantTest
@coversDefaultClass \Drupal\block\Plugin\DisplayVariant\BlockPageVariant[[api-linebreak]] @group block

Namespace

Drupal\Tests\block\Unit\Plugin\DisplayVariant

Code

public function testBuild(array $blocks_config, $visible_block_count, array $expected_render_array) : void {
  $display_variant = $this->setUpDisplayVariant();
  $display_variant->setMainContent([
    '#markup' => 'Hello kittens!',
  ]);
  $blocks = [
    'top' => [],
    'center' => [],
    'bottom' => [],
  ];
  $block_plugin = $this->createMock('Drupal\\Core\\Block\\BlockPluginInterface');
  $main_content_block_plugin = $this->createMock('Drupal\\Core\\Block\\MainContentBlockPluginInterface');
  $messages_block_plugin = $this->createMock('Drupal\\Core\\Block\\MessagesBlockPluginInterface');
  $title_block_plugin = $this->createMock('Drupal\\Core\\Block\\TitleBlockPluginInterface');
  foreach ($blocks_config as $block_id => $block_config) {
    $block = $this->createMock('Drupal\\block\\BlockInterface');
    $block->expects($this->atLeastOnce())
      ->method('getPlugin')
      ->willReturn($block_config[1] ? $main_content_block_plugin : ($block_config[2] ? $messages_block_plugin : ($block_config[3] ? $title_block_plugin : $block_plugin)));
    $blocks[$block_config[0]][$block_id] = $block;
  }
  $this->blockViewBuilder
    ->expects($this->exactly($visible_block_count))
    ->method('view')
    ->willReturn([]);
  $this->blockRepository
    ->expects($this->once())
    ->method('getVisibleBlocksPerRegion')
    ->willReturnCallback(function (&$cacheable_metadata) use ($blocks) {
    $cacheable_metadata['top'] = (new CacheableMetadata())->addCacheTags([
      'route',
    ]);
    return $blocks;
  });
  $value = $display_variant->build();
  $this->assertSame($expected_render_array, $value);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.