function BlockExampleTest::testBlockExampleBasic

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

Tests block_example functionality.

File

modules/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->drupalGet('/admin/structure/block/manage/' . $settings_configurable['id']);
    $this->submitForm($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]']);
}