You are here

public function BlockRepositoryTest::testGetVisibleBlocksPerRegion in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/block/tests/src/Unit/BlockRepositoryTest.php \Drupal\Tests\block\Unit\BlockRepositoryTest::testGetVisibleBlocksPerRegion()

Tests the retrieval of block entities.

@covers ::getVisibleBlocksPerRegion

@dataProvider providerBlocksConfig

File

core/modules/block/tests/src/Unit/BlockRepositoryTest.php, line 84
Contains \Drupal\Tests\block\Unit\BlockRepositoryTest.

Class

BlockRepositoryTest
@coversDefaultClass \Drupal\block\BlockRepository @group block

Namespace

Drupal\Tests\block\Unit

Code

public function testGetVisibleBlocksPerRegion(array $blocks_config, array $expected_blocks) {
  $blocks = [];
  foreach ($blocks_config as $block_id => $block_config) {
    $block = $this
      ->getMock('Drupal\\block\\BlockInterface');
    $block
      ->expects($this
      ->once())
      ->method('access')
      ->will($this
      ->returnValue($block_config[0]));
    $block
      ->expects($block_config[0] ? $this
      ->atLeastOnce() : $this
      ->never())
      ->method('getRegion')
      ->willReturn($block_config[1]);
    $block
      ->expects($this
      ->any())
      ->method('label')
      ->willReturn($block_id);
    $block
      ->expects($this
      ->any())
      ->method('getWeight')
      ->willReturn($block_config[2]);
    $blocks[$block_id] = $block;
  }
  $this->blockStorage
    ->expects($this
    ->once())
    ->method('loadByProperties')
    ->with([
    'theme' => $this->theme,
  ])
    ->willReturn($blocks);
  $result = [];
  $cacheable_metadata = [];
  foreach ($this->blockRepository
    ->getVisibleBlocksPerRegion($cacheable_metadata) as $region => $resulting_blocks) {
    $result[$region] = [];
    foreach ($resulting_blocks as $plugin_id => $block) {
      $result[$region][] = $plugin_id;
    }
  }
  $this
    ->assertEquals($expected_blocks, $result);
}