function SelectTableSortDefaultTest::testTableSortQuery

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

Confirms that a tablesort 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/SelectTableSortDefaultTest.php, line 25

Class

SelectTableSortDefaultTest
Tests the tablesort query extender.

Namespace

Drupal\Tests\system\Functional\Database

Code

public function testTableSortQuery() {
    $sorts = [
        [
            'field' => 'Task ID',
            'sort' => 'desc',
            'first' => 'perform at superbowl',
            'last' => 'eat',
        ],
        [
            'field' => 'Task ID',
            'sort' => 'asc',
            'first' => 'eat',
            'last' => 'perform at superbowl',
        ],
        [
            'field' => 'Task',
            'sort' => 'asc',
            'first' => 'code',
            'last' => 'sleep',
        ],
        [
            'field' => 'Task',
            'sort' => 'desc',
            'first' => 'sleep',
            'last' => 'code',
        ],
    ];
    foreach ($sorts as $sort) {
        $this->drupalGet('database_test/tablesort/', [
            'query' => [
                'order' => $sort['field'],
                'sort' => $sort['sort'],
            ],
        ]);
        $data = json_decode($this->getSession()
            ->getPage()
            ->getContent());
        $first = array_shift($data->tasks);
        $last = array_pop($data->tasks);
        $this->assertEquals($sort['first'], $first->task, 'Items appear in the correct order.');
        $this->assertEquals($sort['last'], $last->task, 'Items appear in the correct order.');
    }
}

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