function BlockUiTest::testBlockPlacementIndicator
Same name in other branches
- 8.9.x core/modules/block/tests/src/Functional/BlockUiTest.php \Drupal\Tests\block\Functional\BlockUiTest::testBlockPlacementIndicator()
- 10 core/modules/block/tests/src/Functional/BlockUiTest.php \Drupal\Tests\block\Functional\BlockUiTest::testBlockPlacementIndicator()
- 11.x core/modules/block/tests/src/Functional/BlockUiTest.php \Drupal\Tests\block\Functional\BlockUiTest::testBlockPlacementIndicator()
Tests the block placement indicator.
File
-
core/
modules/ block/ tests/ src/ Functional/ BlockUiTest.php, line 299
Class
- BlockUiTest
- Tests that the block configuration UI exists and stores data correctly.
Namespace
Drupal\Tests\block\FunctionalCode
public function testBlockPlacementIndicator() {
// Test the block placement indicator with using the domain as URL language
// indicator. This causes destination query parameters to be absolute URLs.
\Drupal::service('module_installer')->install([
'language',
'locale',
]);
$this->container = \Drupal::getContainer();
ConfigurableLanguage::createFromLangcode('it')->save();
$config = $this->config('language.types');
$config->set('negotiation.language_interface.enabled', [
LanguageNegotiationUrl::METHOD_ID => -10,
]);
$config->save();
$config = $this->config('language.negotiation');
$config->set('url.source', LanguageNegotiationUrl::CONFIG_DOMAIN);
$config->set('url.domains', [
'en' => \Drupal::request()->getHost(),
'it' => 'it.example.com',
]);
$config->save();
// Select the 'Powered by Drupal' block to be placed.
$block = [];
$block['id'] = strtolower($this->randomMachineName());
$block['theme'] = 'stark';
$block['region'] = 'content';
// After adding a block, it will indicate which block was just added.
$this->drupalGet('admin/structure/block/add/system_powered_by_block');
$this->submitForm($block, 'Save block');
$this->assertSession()
->addressEquals('admin/structure/block/list/stark?block-placement=' . Html::getClass($block['id']));
// Resaving the block page will remove the block placement indicator.
$this->submitForm([], 'Save blocks');
$this->assertSession()
->addressEquals('admin/structure/block/list/stark');
// Place another block and test the remove functionality works with the
// block placement indicator. Click the first 'Place block' link to bring up
// the list of blocks to place in the first available region.
$this->clickLink('Place block');
// Select the first available block, which is the 'test_xss_title' plugin,
// with a default machine name 'scriptalertxsssubjectscript' that is used
// for the 'block-placement' querystring parameter.
$this->clickLink('Place block');
$this->submitForm([], 'Save block');
$this->assertSession()
->addressEquals('admin/structure/block/list/stark?block-placement=scriptalertxsssubjectscript');
// Removing a block will remove the block placement indicator.
$this->clickLink('Remove');
$this->submitForm([], 'Remove');
// @todo https://www.drupal.org/project/drupal/issues/2980527 this should be
// 'admin/structure/block/list/stark' but there is a bug.
$this->assertSession()
->addressEquals('admin/structure/block');
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.