public function ExposedFilterViewsAjaxGetTest::testExposedFiltering in Views Ajax Get 8
Same name and namespace in other branches
- 2.0.x tests/src/FunctionalJavascript/ExposedFilterViewsAjaxGetTest.php \Drupal\Tests\views_ajax_get\FunctionalJavascript\ExposedFilterViewsAjaxGetTest::testExposedFiltering()
 
Tests if exposed filtering via AJAX works for the "Content" View.
File
- tests/
src/ FunctionalJavascript/ ExposedFilterViewsAjaxGetTest.php, line 22  
Class
- ExposedFilterViewsAjaxGetTest
 - Tests basic AJAX functionality of Views exposed forms using GET requests.
 
Namespace
Drupal\Tests\views_ajax_get\FunctionalJavascriptCode
public function testExposedFiltering() {
  // Create a Content type and two test nodes.
  $this
    ->createContentType([
    'type' => 'page',
  ]);
  $this
    ->createNode([
    'title' => 'Page One',
  ]);
  $this
    ->createNode([
    'title' => 'Page Two',
  ]);
  // Enable page cache.
  $config = $this
    ->config('system.performance');
  $config
    ->set('cache.page.max_age', 300);
  $config
    ->save();
  // Visit the test view page to test caching.
  $this
    ->drupalGet('views-ajax-get-cache-test');
  $this
    ->addAjaxCompleteHandler();
  $session = $this
    ->getSession();
  // Search for "Page One".
  $this
    ->submitForm([
    'title' => 'Page One',
  ], t('Filter'));
  $this
    ->assertSession()
    ->assertWaitOnAjaxRequest();
  // Check that the AJAX request was a GET and cache missed first time.
  $drupal_settings = $this
    ->getDrupalSettings();
  $this
    ->assertEquals('GET', $drupal_settings['viewsAjaxGetMethod']);
  $this
    ->assertEquals('MISS', $drupal_settings['viewsAjaxGetCacheHeader']);
  // Verify that only the "Page One" Node is present.
  $html = $session
    ->getPage()
    ->getHtml();
  $this
    ->assertContains('Page One', $html);
  $this
    ->assertNotContains('Page Two', $html);
  // Search for "Page Two".
  $this
    ->submitForm([
    'title' => 'Page Two',
  ], t('Filter'));
  $this
    ->assertSession()
    ->assertWaitOnAjaxRequest();
  $drupal_settings = $this
    ->getDrupalSettings();
  $this
    ->assertEquals('GET', $drupal_settings['viewsAjaxGetMethod']);
  $this
    ->assertEquals('MISS', $drupal_settings['viewsAjaxGetCacheHeader']);
  // Verify that only the "Page Two" Node is present.
  $html = $session
    ->getPage()
    ->getHtml();
  $this
    ->assertContains('Page Two', $html);
  $this
    ->assertNotContains('Page One', $html);
  // Search for "Page One".
  $this
    ->submitForm([
    'title' => 'Page One',
  ], t('Filter'));
  $this
    ->assertSession()
    ->assertWaitOnAjaxRequest();
  // AJAX request should be a get and a hit now.
  $drupal_settings = $this
    ->getDrupalSettings();
  $this
    ->assertEquals('GET', $drupal_settings['viewsAjaxGetMethod']);
  // @todo Check for X-Drupal-Cache header is HIT. Right now it's coming
  // up in the XHR response header as MISS, event though it seems to be HIT
  // server side.
  // Verify that only the "Page One" Node is present.
  $html = $session
    ->getPage()
    ->getHtml();
  $this
    ->assertContains('Page One', $html);
  $this
    ->assertNotContains('Page Two', $html);
  // Search for "Page Two".
  $this
    ->submitForm([
    'title' => 'Page Two',
  ], t('Filter'));
  $this
    ->assertSession()
    ->assertWaitOnAjaxRequest();
  $drupal_settings = $this
    ->getDrupalSettings();
  $this
    ->assertEquals('GET', $drupal_settings['viewsAjaxGetMethod']);
  // @todo Check for X-Drupal-Cache header is HIT. Right now it's coming
  // up in the XHR response header as MISS, event though it seems to be HIT
  // server side.
  // Verify that only the "Page Two" Node is present.
  $html = $session
    ->getPage()
    ->getHtml();
  $this
    ->assertContains('Page Two', $html);
  $this
    ->assertNotContains('Page One', $html);
}