function BlockPluginCollectionTest::testGetAllByRegion

Same name in other branches
  1. 8.x-3.x tests/src/Unit/BlockPluginCollectionTest.php \Drupal\Tests\ctools\Unit\BlockPluginCollectionTest::testGetAllByRegion()

Tests the getAllByRegion() method.

@covers ::getAllByRegion

File

tests/src/Unit/BlockPluginCollectionTest.php, line 26

Class

BlockPluginCollectionTest
Tests the block plugin collection.

Namespace

Drupal\Tests\ctools\Unit

Code

public function testGetAllByRegion() {
    $blocks = [
        'foo' => [
            'id' => 'foo',
            'label' => 'Foo',
            'plugin' => 'system_powered_by_block',
            'region' => 'bottom',
        ],
        'bar' => [
            'id' => 'bar',
            'label' => 'Bar',
            'plugin' => 'system_powered_by_block',
            'region' => 'top',
        ],
        'bing' => [
            'id' => 'bing',
            'label' => 'Bing',
            'plugin' => 'system_powered_by_block',
            'region' => 'bottom',
            'weight' => -10,
        ],
        'baz' => [
            'id' => 'baz',
            'label' => 'Baz',
            'plugin' => 'system_powered_by_block',
            'region' => 'bottom',
        ],
    ];
    $block_manager = $this->prophesize(BlockManagerInterface::class);
    $plugins = [];
    foreach ($blocks as $block_id => $block) {
        $plugin = $this->prophesize(BlockPluginInterface::class);
        $plugin->label()
            ->willReturn($block['label']);
        $plugin->getConfiguration()
            ->willReturn($block);
        $plugins[$block_id] = $plugin->reveal();
        $block_manager->createInstance($block_id, $block)
            ->willReturn($plugin->reveal())
            ->shouldBeCalled();
    }
    $block_plugin_collection = new BlockPluginCollection($block_manager->reveal(), $blocks);
    $expected = [
        'bottom' => [
            'bing' => $plugins['bing'],
            'baz' => $plugins['baz'],
            'foo' => $plugins['foo'],
        ],
        'top' => [
            'bar' => $plugins['bar'],
        ],
    ];
    $this->assertSame($expected, $block_plugin_collection->getAllByRegion());
}