diff --git a/core/modules/system/src/Tests/Pager/PagerTest.php b/core/modules/system/src/Tests/Pager/PagerTest.php index 0a49a58..0de500b 100644 --- a/core/modules/system/src/Tests/Pager/PagerTest.php +++ b/core/modules/system/src/Tests/Pager/PagerTest.php @@ -16,7 +16,7 @@ class PagerTest extends WebTestBase { * * @var array */ - public static $modules = ['dblog', 'pager_test']; + public static $modules = ['dblog', 'pager_test', 'node']; /** * A user with permission to access site reports. @@ -181,6 +181,31 @@ public function testMultiplePagers() { } /** + * Test entity query pager. + */ + public function testEntityQueryPager() { + // Insert 10 node entities. The test module sets a pager limit of 2 to + // fetch data, so we will have 5 pages to flip through. + $this->drupalCreateContentType(['type' => 'article', 'name' => t('Article')]); + for ($i = 0; $i < 10; $i++) { + $this->drupalCreateNode(['type' => 'article', 'promote' => 1]); + } + + // Get first page. + $this->drupalGet('pager-test/entity-query-pager'); + $this->assertPagerItems(0); + + // Try getting a negative page, should still render the first one. + $this->drupalGet('pager-test/entity-query-pager', ['query' => ['page' => -5]]); + $this->assertPagerItems(0); + + // Try getting a page above the range, should render the last one. + $this->drupalGet('pager-test/entity-query-pager', ['query' => ['page' => 200]]); + $this->assertPagerItems(4); + + } + + /** * Test proper functioning of the ellipsis. */ public function testPagerEllipsis() { diff --git a/core/modules/system/tests/modules/pager_test/pager_test.routing.yml b/core/modules/system/tests/modules/pager_test/pager_test.routing.yml index ea6c9cb..625a797 100644 --- a/core/modules/system/tests/modules/pager_test/pager_test.routing.yml +++ b/core/modules/system/tests/modules/pager_test/pager_test.routing.yml @@ -1,3 +1,11 @@ +pager_test.entity_query_pager: + path: '/pager-test/entity-query-pager' + defaults: + _title: 'Page using an entity query pager for testing' + _controller: '\Drupal\pager_test\Controller\EntityQueryPagerTestController::entityQueryPager' + requirements: + _access: 'TRUE' + pager_test.multiple_pagers: path: '/pager-test/multiple-pagers' defaults: diff --git a/core/modules/system/tests/modules/pager_test/src/Controller/EntityQueryPagerTestController.php b/core/modules/system/tests/modules/pager_test/src/Controller/EntityQueryPagerTestController.php new file mode 100644 index 0000000..6ad1b54 --- /dev/null +++ b/core/modules/system/tests/modules/pager_test/src/Controller/EntityQueryPagerTestController.php @@ -0,0 +1,41 @@ + 'id'], + ]; + $query = \Drupal::service('entity.query')->get('node'); + $query->pager(2); + $result = $query->execute(); + $rows = []; + foreach ($result as $row) { + $rows[] = ['data' => [$row]]; + } + + $build = []; + $build[] = [ + '#theme' => 'table', + '#header' => $header, + '#rows' => $rows, + '#empty' => $this->t("There are no node ids found in the db"), + ]; + $build[] = [ + '#type' => 'pager', + ]; + + return $build; + } + +}