You are here

public function BlockRepositoryTest::testGetVisibleBlocksPerRegionWithContext in Drupal 10

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

Tests the retrieval of block entities that are context-aware.

@covers ::getVisibleBlocksPerRegion

File

core/modules/block/tests/src/Unit/BlockRepositoryTest.php, line 150

Class

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

Namespace

Drupal\Tests\block\Unit

Code

public function testGetVisibleBlocksPerRegionWithContext() {
  $block = $this
    ->createMock('Drupal\\block\\BlockInterface');
  $block
    ->expects($this
    ->once())
    ->method('access')
    ->willReturn(AccessResult::allowed()
    ->addCacheTags([
    'config:block.block.block_id',
  ]));
  $block
    ->expects($this
    ->once())
    ->method('getRegion')
    ->willReturn('top');
  $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;
    }
  }
  $expected = [
    'top' => [
      'block_id',
    ],
    'center' => [],
    'bottom' => [],
  ];
  $this
    ->assertSame($expected, $result);

  // Assert that the cacheable metadata from the block access results was
  // collected.
  $this
    ->assertEquals([
    'config:block.block.block_id',
  ], $cacheable_metadata['top']
    ->getCacheTags());
}