function BlockTest::moveBlockToRegion

Same name in other branches
  1. 9 core/modules/block/tests/src/Functional/BlockTest.php \Drupal\Tests\block\Functional\BlockTest::moveBlockToRegion()
  2. 10 core/modules/block/tests/src/Functional/BlockTest.php \Drupal\Tests\block\Functional\BlockTest::moveBlockToRegion()
  3. 11.x core/modules/block/tests/src/Functional/BlockTest.php \Drupal\Tests\block\Functional\BlockTest::moveBlockToRegion()

Moves a block to a given region via the UI and confirms the result.

Parameters

array $block: An array of information about the block, including the following keys:

  • module: The module providing the block.
  • title: The title of the block.
  • delta: The block's delta key.

string $region: The machine name of the theme region to move the block to, for example 'header' or 'sidebar_first'.

1 call to BlockTest::moveBlockToRegion()
BlockTest::testBlock in core/modules/block/tests/src/Functional/BlockTest.php
Test configuring and moving a module-define block to specific regions.

File

core/modules/block/tests/src/Functional/BlockTest.php, line 337

Class

BlockTest
Tests basic block functionality.

Namespace

Drupal\Tests\block\Functional

Code

public function moveBlockToRegion(array $block, $region) {
    // Set the created block to a specific region.
    $block += [
        'theme' => $this->config('system.theme')
            ->get('default'),
    ];
    $edit = [];
    $edit['blocks[' . $block['id'] . '][region]'] = $region;
    $this->drupalPostForm('admin/structure/block', $edit, t('Save blocks'));
    // Confirm that the block was moved to the proper region.
    $this->assertText(t('The block settings have been updated.'), new FormattableMarkup('Block successfully moved to %region_name region.', [
        '%region_name' => $region,
    ]));
    // Confirm that the block is being displayed.
    $this->drupalGet('');
    $this->assertText(t($block['settings[label]']), 'Block successfully being displayed on the page.');
    // Confirm that the custom block was found at the proper region.
    $xpath = $this->buildXPathQuery('//div[@class=:region-class]//div[@id=:block-id]/*', [
        ':region-class' => 'region region-' . Html::getClass($region),
        ':block-id' => 'block-' . str_replace('_', '-', strtolower($block['id'])),
    ]);
    $this->assertFieldByXPath($xpath, NULL, t('Block found in %region_name region.', [
        '%region_name' => Html::getClass($region),
    ]));
}

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