3 namespace Drupal\KernelTests\Core\Database;
6 * Tests the Select query builder.
10 class SelectOrderedTest extends DatabaseTestBase {
13 * Tests basic ORDER BY.
15 public function testSimpleSelectOrdered() {
16 $query = db_select('test');
17 $query->addField('test', 'name');
18 $age_field = $query->addField('test', 'age', 'age');
19 $query->orderBy($age_field);
20 $result = $query->execute();
24 foreach ($result as $record) {
26 $this->assertTrue($record->age >= $last_age, 'Results returned in correct order.');
27 $last_age = $record->age;
30 $this->assertEqual($num_records, 4, 'Returned the correct number of rows.');
34 * Tests multiple ORDER BY.
36 public function testSimpleSelectMultiOrdered() {
37 $query = db_select('test');
38 $query->addField('test', 'name');
39 $age_field = $query->addField('test', 'age', 'age');
40 $job_field = $query->addField('test', 'job');
41 $query->orderBy($job_field);
42 $query->orderBy($age_field);
43 $result = $query->execute();
47 ['Ringo', 28, 'Drummer'],
48 ['John', 25, 'Singer'],
49 ['George', 27, 'Singer'],
50 ['Paul', 26, 'Songwriter'],
52 $results = $result->fetchAll(\PDO::FETCH_NUM);
53 foreach ($expected as $k => $record) {
55 foreach ($record as $kk => $col) {
56 if ($expected[$k][$kk] != $results[$k][$kk]) {
57 $this->assertTrue(FALSE, 'Results returned in correct order.');
61 $this->assertEqual($num_records, 4, 'Returned the correct number of rows.');
65 * Tests ORDER BY descending.
67 public function testSimpleSelectOrderedDesc() {
68 $query = db_select('test');
69 $query->addField('test', 'name');
70 $age_field = $query->addField('test', 'age', 'age');
71 $query->orderBy($age_field, 'DESC');
72 $result = $query->execute();
75 $last_age = 100000000;
76 foreach ($result as $record) {
78 $this->assertTrue($record->age <= $last_age, 'Results returned in correct order.');
79 $last_age = $record->age;
82 $this->assertEqual($num_records, 4, 'Returned the correct number of rows.');