function SelectTableSortDefaultTest::testTableSortQueryFirst

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

Confirms precedence of tablesorts headers.

If a tablesort's orderByHeader is called before another orderBy, then its header happens first.

File

core/modules/system/tests/src/Functional/Database/SelectTableSortDefaultTest.php, line 53

Class

SelectTableSortDefaultTest
Tests the tablesort query extender.

Namespace

Drupal\Tests\system\Functional\Database

Code

public function testTableSortQueryFirst() {
    $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_first/', [
            '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, new FormattableMarkup('Items appear in the correct order sorting by @field @sort.', [
            '@field' => $sort['field'],
            '@sort' => $sort['sort'],
        ]));
        $this->assertEquals($sort['last'], $last->task, new FormattableMarkup('Items appear in the correct order sorting by @field @sort.', [
            '@field' => $sort['field'],
            '@sort' => $sort['sort'],
        ]));
    }
}

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