function BlockDemoTest::testBlockDemo

Same name and namespace in other branches
  1. 9 core/modules/block/tests/src/Functional/BlockDemoTest.php \Drupal\Tests\block\Functional\BlockDemoTest::testBlockDemo()
  2. 8.9.x core/modules/block/tests/src/Functional/BlockDemoTest.php \Drupal\Tests\block\Functional\BlockDemoTest::testBlockDemo()
  3. 10 core/modules/block/tests/src/Functional/BlockDemoTest.php \Drupal\Tests\block\Functional\BlockDemoTest::testBlockDemo()

Check for the accessibility of the admin block demo page.

File

core/modules/block/tests/src/Functional/BlockDemoTest.php, line 29

Class

BlockDemoTest
Tests the block demo page with admin themes.

Namespace

Drupal\Tests\block\Functional

Code

public function testBlockDemo() : void {
  // Create administrative user.
  $admin_user = $this->drupalCreateUser([
    'administer blocks',
    'administer themes',
  ]);
  $this->drupalLogin($admin_user);
  // Confirm we have access to the block demo page for the default theme.
  $config = $this->container
    ->get('config.factory')
    ->get('system.theme');
  $default_theme = $config->get('default');
  $this->drupalGet('admin/structure/block/demo/' . $default_theme);
  $this->assertSession()
    ->statusCodeEquals(200);
  $this->assertSession()
    ->linkByHrefExists('admin/structure/block');
  $this->assertSession()
    ->linkByHrefNotExists('admin/structure/block/list/' . $default_theme);
  // All available themes in core.
  $available_themes = [
    'olivero',
    'claro',
    'stark',
  ];
  // All available themes minute minus the default theme.
  $themes = array_diff($available_themes, [
    $default_theme,
  ]);
  foreach ($themes as $theme) {
    // Install theme.
    $this->container
      ->get('theme_installer')
      ->install([
      $theme,
    ]);
    // Confirm access to the block demo page for the theme.
    $this->drupalGet('admin/structure/block/demo/' . $theme);
    $this->assertSession()
      ->statusCodeEquals(200);
    // Confirm existence of link for "Exit block region demonstration".
    $this->assertSession()
      ->linkByHrefExists('admin/structure/block/list/' . $theme);
  }
  // Confirm access to the block demo page is denied for an invalid theme.
  $this->drupalGet('admin/structure/block/demo/invalid_theme');
  $this->assertSession()
    ->statusCodeEquals(403);
}

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