You are here

public function ExposedFilterAJAXTest::testExposedFiltering in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/views/tests/src/FunctionalJavascript/ExposedFilterAJAXTest.php \Drupal\Tests\views\FunctionalJavascript\ExposedFilterAJAXTest::testExposedFiltering()

Tests if exposed filtering via AJAX works for the "Content" View.

File

core/modules/views/tests/src/FunctionalJavascript/ExposedFilterAJAXTest.php, line 58

Class

ExposedFilterAJAXTest
Tests the basic AJAX functionality of Views exposed forms.

Namespace

Drupal\Tests\views\FunctionalJavascript

Code

public function testExposedFiltering() {

  // Visit the View page.
  $this
    ->drupalGet('admin/content');
  $session = $this
    ->getSession();

  // Ensure that the Content we're testing for is present.
  $html = $session
    ->getPage()
    ->getHtml();
  $this
    ->assertStringContainsString('Page One', $html);
  $this
    ->assertStringContainsString('Page Two', $html);

  // Search for "Page One".
  $this
    ->submitForm([
    'title' => 'Page One',
  ], t('Filter'));
  $this
    ->assertSession()
    ->assertWaitOnAjaxRequest();

  // Verify that only the "Page One" Node is present.
  $html = $session
    ->getPage()
    ->getHtml();
  $this
    ->assertStringContainsString('Page One', $html);
  $this
    ->assertStringNotContainsString('Page Two', $html);

  // Search for "Page Two".
  $this
    ->submitForm([
    'title' => 'Page Two',
  ], t('Filter'));
  $this
    ->assertSession()
    ->assertWaitOnAjaxRequest();

  // Verify that only the "Page Two" Node is present.
  $html = $session
    ->getPage()
    ->getHtml();
  $this
    ->assertStringContainsString('Page Two', $html);
  $this
    ->assertStringNotContainsString('Page One', $html);

  // Submit bulk actions form to ensure that the previous AJAX submit does not
  // break it.
  $this
    ->submitForm([
    'action' => 'node_make_sticky_action',
    'node_bulk_form[0]' => TRUE,
  ], t('Apply to selected items'));

  // Verify that the action was performed.
  $this
    ->assertSession()
    ->pageTextContains('Make content sticky was applied to 1 item.');

  // Reset the form.
  $this
    ->submitForm([], t('Reset'));
  $this
    ->assertSession()
    ->assertWaitOnAjaxRequest();
  $this
    ->assertSession()
    ->pageTextContains('Page One');
  $this
    ->assertSession()
    ->pageTextContains('Page Two');
  $this
    ->assertFalse($session
    ->getPage()
    ->hasButton('Reset'));
}