You are here

public function BlockFilterTest::testBlockFilter in Drupal 8

Same name in this branch
  1. 8 core/modules/block/tests/src/FunctionalJavascript/BlockFilterTest.php \Drupal\Tests\block\FunctionalJavascript\BlockFilterTest::testBlockFilter()
  2. 8 core/modules/layout_builder/tests/src/FunctionalJavascript/BlockFilterTest.php \Drupal\Tests\layout_builder\FunctionalJavascript\BlockFilterTest::testBlockFilter()
Same name and namespace in other branches
  1. 9 core/modules/block/tests/src/FunctionalJavascript/BlockFilterTest.php \Drupal\Tests\block\FunctionalJavascript\BlockFilterTest::testBlockFilter()

Tests block filter.

File

core/modules/block/tests/src/FunctionalJavascript/BlockFilterTest.php, line 41

Class

BlockFilterTest
Tests the JavaScript functionality of the block add filter.

Namespace

Drupal\Tests\block\FunctionalJavascript

Code

public function testBlockFilter() {
  $this
    ->drupalGet('admin/structure/block');
  $assertSession = $this
    ->assertSession();
  $session = $this
    ->getSession();
  $page = $session
    ->getPage();

  // Find the block filter field on the add-block dialog.
  $page
    ->find('css', '#edit-blocks-region-header-title')
    ->click();
  $filter = $assertSession
    ->waitForElement('css', '.block-filter-text');

  // Get all block rows, for assertions later.
  $block_rows = $page
    ->findAll('css', '.block-add-table tbody tr');

  // Test block filter reduces the number of visible rows.
  $filter
    ->setValue('ad');
  $session
    ->wait(10000, 'jQuery("#drupal-live-announce").html().indexOf("blocks are available") > -1');
  $visible_rows = $this
    ->filterVisibleElements($block_rows);
  if (count($block_rows) > 0) {
    $this
      ->assertNotEquals(count($block_rows), count($visible_rows));
  }

  // Test Drupal.announce() message when multiple matches are expected.
  $expected_message = count($visible_rows) . ' blocks are available in the modified list.';
  $assertSession
    ->elementTextContains('css', '#drupal-live-announce', $expected_message);

  // Test Drupal.announce() message when only one match is expected.
  $filter
    ->setValue('Powered by');
  $session
    ->wait(10000, 'jQuery("#drupal-live-announce").html().indexOf("block is available") > -1');
  $visible_rows = $this
    ->filterVisibleElements($block_rows);
  $this
    ->assertCount(1, $visible_rows);
  $expected_message = '1 block is available in the modified list.';
  $assertSession
    ->elementTextContains('css', '#drupal-live-announce', $expected_message);

  // Test Drupal.announce() message when no matches are expected.
  $filter
    ->setValue('Pan-Galactic Gargle Blaster');
  $session
    ->wait(10000, 'jQuery("#drupal-live-announce").html().indexOf("0 blocks are available") > -1');
  $visible_rows = $this
    ->filterVisibleElements($block_rows);
  $this
    ->assertCount(0, $visible_rows);
  $expected_message = '0 blocks are available in the modified list.';
  $assertSession
    ->elementTextContains('css', '#drupal-live-announce', $expected_message);
}