function SelectPagerDefaultTest::testEvenPagerQuery

Same name and namespace in other branches
  1. 8.9.x core/modules/system/tests/src/Functional/Database/SelectPagerDefaultTest.php \Drupal\Tests\system\Functional\Database\SelectPagerDefaultTest::testEvenPagerQuery()
  2. 10 core/modules/system/tests/src/Functional/Database/SelectPagerDefaultTest.php \Drupal\Tests\system\Functional\Database\SelectPagerDefaultTest::testEvenPagerQuery()
  3. 11.x core/modules/system/tests/src/Functional/Database/SelectPagerDefaultTest.php \Drupal\Tests\system\Functional\Database\SelectPagerDefaultTest::testEvenPagerQuery()

Confirms that a pager query returns the correct results.

Note that we have to make an HTTP request to a test page handler because the pager depends on GET parameters.

File

core/modules/system/tests/src/Functional/Database/SelectPagerDefaultTest.php, line 28

Class

SelectPagerDefaultTest
Tests the pager query select extender.

Namespace

Drupal\Tests\system\Functional\Database

Code

public function testEvenPagerQuery() {
    // To keep the test from being too brittle, we determine up front
    // what the page count should be dynamically, and pass the control
    // information forward to the actual query on the other side of the
    // HTTP request.
    $limit = 2;
    $count = Database::getConnection()->select('test')
        ->countQuery()
        ->execute()
        ->fetchField();
    $correct_number = $limit;
    $num_pages = floor($count / $limit);
    // If there is no remainder from rounding, subtract 1 since we index from 0.
    if (!($num_pages * $limit < $count)) {
        $num_pages--;
    }
    for ($page = 0; $page <= $num_pages; ++$page) {
        $this->drupalGet('database_test/pager_query_even/' . $limit, [
            'query' => [
                'page' => $page,
            ],
        ]);
        $data = json_decode($this->getSession()
            ->getPage()
            ->getContent());
        if ($page == $num_pages) {
            $correct_number = $count - $limit * $page;
        }
        $this->assertCount($correct_number, $data->names, new FormattableMarkup('Correct number of records returned by pager: @number', [
            '@number' => $correct_number,
        ]));
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.