You are here

public function BlockExampleTestCase::testBlockExampleBasic in Examples for Developers 7

Functional test for our block example.

Login user, create an example node, and test block functionality through the admin and user interfaces.

File

block_example/block_example.test, line 49
Test case for testing the block example module.

Class

BlockExampleTestCase
Functional tests for the Block Example module.

Code

public function testBlockExampleBasic() {

  // Login the admin user.
  $this
    ->drupalLogin($this->webUser);

  // Find the blocks in the settings page.
  $this
    ->drupalGet('admin/structure/block');
  $this
    ->assertRaw(t('Example: configurable text string'), 'Block configurable-string found.');
  $this
    ->assertRaw(t('Example: empty block'), 'Block empty-block found.');

  // Verify the default settings for block are processed.
  $this
    ->assertFieldByName('blocks[block_example_example_empty][region]', 'sidebar_first', 'Empty block is enabled in first sidebar successfully verified.');
  $this
    ->assertFieldByName('blocks[block_example_example_configurable_text][region]', -1, 'Configurable text block is disabled in first sidebar successfully verified.');

  // Verify that blocks are not shown.
  $this
    ->drupalGet('/');
  $this
    ->assertNoRaw(t('Title of first block (example_configurable_text)'), 'Block configurable test not found.');
  $this
    ->assertNoRaw(t('Title of second block (example_empty)'), 'Block empty not found.');

  // Enable the Configurable text block and verify.
  $this
    ->drupalPost('admin/structure/block', array(
    'blocks[block_example_example_configurable_text][region]' => 'sidebar_first',
  ), t('Save blocks'));
  $this
    ->assertFieldByName('blocks[block_example_example_configurable_text][region]', 'sidebar_first', 'Configurable text block is enabled in first sidebar successfully verified.');

  // Verify that blocks are there. Empty block will not be shown, because it
  // is empty.
  $this
    ->drupalGet('/');
  $this
    ->assertRaw(t('Title of first block (example_configurable_text)'), 'Block configurable text found.');

  // Change content of configurable text block.
  $string = $this
    ->randomName();
  $this
    ->drupalPost('admin/structure/block/manage/block_example/example_configurable_text/configure', array(
    'block_example_string' => $string,
  ), t('Save block'));

  // Verify that new content is shown.
  $this
    ->drupalGet('/');
  $this
    ->assertRaw($string, 'Content of configurable text block successfully verified.');

  // Make sure our example uppercased block is shown as altered by the
  // hook_block_view_alter().
  $this
    ->assertRaw(t('UPPERCASE THIS PLEASE'));

  // Create a new block and make sure it gets uppercased.
  $post = array(
    'title' => t('configurable block to be uppercased'),
    'info' => t('configurable block to be uppercased'),
    'body[value]' => t('body of new  block'),
    'regions[bartik]' => 'sidebar_first',
  );
  $this
    ->drupalPost('admin/structure/block/add', $post, t('Save block'));
  $this
    ->drupalGet('/');
  $this
    ->assertRaw('CONFIGURABLE BLOCK TO BE UPPERCASED');

  // Verify that search block is at the bottom of the region.
  // Enable the search block on top of sidebar_first.
  $block_options = array(
    'blocks[search_form][region]' => 'sidebar_first',
    'blocks[search_form][weight]' => -9,
  );
  $this
    ->drupalPost('admin/structure/block', $block_options, t('Save blocks'));

  // The first 'configure block' link should be from our configurable block,
  // the second from the Navigation menu, and the fifth (#4) from
  // search block if it was successfully pushed to the bottom.
  $this
    ->drupalGet('/');
  $this
    ->clickLink('Configure block', 4);
  $this
    ->assertText(t("'@search' block", array(
    '@search' => t('Search form'),
  )), 'hook_block_info_alter successfully verified.');
}