public function PaginationAJAXTest::testBasicPagination in Drupal 9
Same name and namespace in other branches
- 8 core/modules/views/tests/src/FunctionalJavascript/PaginationAJAXTest.php \Drupal\Tests\views\FunctionalJavascript\PaginationAJAXTest::testBasicPagination()
Tests if pagination via AJAX works for the "Content" View.
File
- core/
modules/ views/ tests/ src/ FunctionalJavascript/ PaginationAJAXTest.php, line 64
Class
- PaginationAJAXTest
- Tests the click sorting AJAX functionality of Views exposed forms.
Namespace
Drupal\Tests\views\FunctionalJavascriptCode
public function testBasicPagination() {
// Visit the content page.
$this
->drupalGet('test-content-ajax');
$session_assert = $this
->assertSession();
$page = $this
->getSession()
->getPage();
$settings = $this
->getDrupalSettings();
// Make sure that the view_path is set correctly.
$expected_view_path = '/test-content-ajax';
$this
->assertEquals($expected_view_path, current($settings['views']['ajaxViews'])['view_path']);
// Set the number of items displayed per page to 5 using the exposed pager.
$page
->selectFieldOption('edit-items-per-page', 5);
$page
->pressButton('Filter');
$session_assert
->assertWaitOnAjaxRequest();
// Change 'Updated' sorting from descending to ascending.
$page
->clickLink('Updated');
$session_assert
->assertWaitOnAjaxRequest();
// Use the pager by clicking on the links and test if we see the expected
// number of rows on each page. For easy targeting the titles of the pager
// links are used.
/** @var \Behat\Mink\Element\NodeElement[] $rows */
$rows = $page
->findAll('css', 'tbody tr');
$this
->assertCount(5, $rows);
$this
->assertStringContainsString('Node 1 content', $rows[0]
->getHtml());
$this
->clickLink('Go to page 2');
$session_assert
->assertWaitOnAjaxRequest();
$rows = $page
->findAll('css', 'tbody tr');
$this
->assertCount(5, $rows);
$this
->assertStringContainsString('Node 6 content', $rows[0]
->getHtml());
$link = $page
->findLink('Go to page 3');
// Test that no unwanted parameters are added to the URL.
$this
->assertEquals('?status=All&type=All&langcode=All&items_per_page=5&order=changed&sort=asc&title=&page=2', $link
->getAttribute('href'));
$this
->assertNoDuplicateAssetsOnPage();
$this
->clickLink('Go to page 3');
$session_assert
->assertWaitOnAjaxRequest();
$rows = $page
->findAll('css', 'tbody tr');
$this
->assertCount(1, $rows);
$this
->assertStringContainsString('Node 11 content', $rows[0]
->getHtml());
// Navigate back to the first page.
$this
->clickLink('Go to first page');
$session_assert
->assertWaitOnAjaxRequest();
$rows = $page
->findAll('css', 'tbody tr');
$this
->assertCount(5, $rows);
$this
->assertStringContainsString('Node 1 content', $rows[0]
->getHtml());
// Navigate using the 'next' link.
$this
->clickLink('Go to next page');
$session_assert
->assertWaitOnAjaxRequest();
$rows = $page
->findAll('css', 'tbody tr');
$this
->assertCount(5, $rows);
$this
->assertStringContainsString('Node 6 content', $rows[0]
->getHtml());
// Navigate using the 'last' link.
$this
->clickLink('Go to last page');
$session_assert
->assertWaitOnAjaxRequest();
$rows = $page
->findAll('css', 'tbody tr');
$this
->assertCount(1, $rows);
$this
->assertStringContainsString('Node 11 content', $rows[0]
->getHtml());
// Make sure the AJAX calls don't change the view_path.
$settings = $this
->getDrupalSettings();
$this
->assertEquals($expected_view_path, current($settings['views']['ajaxViews'])['view_path']);
}