You are here

public function BlockPluginCollectionTest::testGetAllByRegion in Chaos Tool Suite (ctools) 8.3

Tests the getAllByRegion() method.

@covers ::getAllByRegion

File

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

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());
}