function BlockRepositoryTest::testGetVisibleBlocksPerRegionWithContext

Same name in other branches
  1. 9 core/modules/block/tests/src/Unit/BlockRepositoryTest.php \Drupal\Tests\block\Unit\BlockRepositoryTest::testGetVisibleBlocksPerRegionWithContext()
  2. 8.9.x core/modules/block/tests/src/Unit/BlockRepositoryTest.php \Drupal\Tests\block\Unit\BlockRepositoryTest::testGetVisibleBlocksPerRegionWithContext()
  3. 11.x 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 152

Class

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

Namespace

Drupal\Tests\block\Unit

Code

public function testGetVisibleBlocksPerRegionWithContext() : void {
    $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());
}

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