You are here

public function BlockExampleTest::testBlockExampleBasic in Examples for Developers 8

Same name and namespace in other branches
  1. 3.x modules/block_example/tests/src/Functional/BlockExampleTest.php \Drupal\Tests\block_example\Functional\BlockExampleTest::testBlockExampleBasic()

Tests block_example functionality.

File

block_example/tests/src/Functional/BlockExampleTest.php, line 32

Class

BlockExampleTest
Test the configuration options and block created by Block Example module.

Namespace

Drupal\Tests\block_example\Functional

Code

public function testBlockExampleBasic() {
  $assert = $this
    ->assertSession();

  // Create user.
  $web_user = $this
    ->drupalCreateUser([
    'administer blocks',
  ]);

  // Login the admin user.
  $this
    ->drupalLogin($web_user);
  $theme_name = $this
    ->config('system.theme')
    ->get('default');

  // Verify the blocks are listed to be added.
  $this
    ->drupalGet('/admin/structure/block/library/' . $theme_name, [
    'query' => [
      'region' => 'content',
    ],
  ]);
  $assert
    ->pageTextContains('Example: configurable text');
  $assert
    ->pageTextContains('Example: empty block');
  $assert
    ->pageTextContains('Example: uppercase this please');

  // Define and place blocks.
  $settings_configurable = [
    'label' => 'Configurable text',
    'id' => 'block_example_example_configurable_text',
    'theme' => $theme_name,
  ];
  $this
    ->drupalPlaceBlock('example_configurable_text', $settings_configurable);
  $settings_uppercase = [
    'label' => 'Configurable block to be uppercased',
    'id' => 'block_example_example_uppercased',
    'theme' => $theme_name,
  ];
  $this
    ->drupalPlaceBlock('example_uppercase', $settings_uppercase);
  $settings_empty = [
    'label' => 'Empty block',
    'id' => 'block_example_example_empty',
    'theme' => $theme_name,
  ];
  $this
    ->drupalPlaceBlock('example_empty', $settings_empty);

  // Verify that blocks are there. Empty block will not be shown, because it
  // holds an empty array.
  $this
    ->drupalGet('');
  $assert
    ->pageTextContains($settings_configurable['label']);
  $assert
    ->pageTextContains($settings_uppercase['label']);
  $assert
    ->pageTextContains(mb_strtoupper($settings_uppercase['label']));
  $assert
    ->pageTextNotContains($settings_empty['label']);

  // Change content of configurable text block.
  $edit = [
    'settings[block_example_string_text]' => $this
      ->randomMachineName(),
  ];
  $this
    ->drupalPostForm('/admin/structure/block/manage/' . $settings_configurable['id'], $edit, 'Save block');
  $assert
    ->statusCodeEquals(200);

  // Verify that new content is shown.
  $this
    ->drupalGet('');
  $assert
    ->statusCodeEquals(200);
  $assert
    ->pageTextContains($edit['settings[block_example_string_text]']);
}