Version 1
[yaffs-website] / web / core / tests / Drupal / KernelTests / Core / Database / SelectOrderedTest.php
1 <?php
2
3 namespace Drupal\KernelTests\Core\Database;
4
5 /**
6  * Tests the Select query builder.
7  *
8  * @group Database
9  */
10 class SelectOrderedTest extends DatabaseTestBase {
11
12   /**
13    * Tests basic ORDER BY.
14    */
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();
21
22     $num_records = 0;
23     $last_age = 0;
24     foreach ($result as $record) {
25       $num_records++;
26       $this->assertTrue($record->age >= $last_age, 'Results returned in correct order.');
27       $last_age = $record->age;
28     }
29
30     $this->assertEqual($num_records, 4, 'Returned the correct number of rows.');
31   }
32
33   /**
34    * Tests multiple ORDER BY.
35    */
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();
44
45     $num_records = 0;
46     $expected = [
47       ['Ringo', 28, 'Drummer'],
48       ['John', 25, 'Singer'],
49       ['George', 27, 'Singer'],
50       ['Paul', 26, 'Songwriter'],
51     ];
52     $results = $result->fetchAll(\PDO::FETCH_NUM);
53     foreach ($expected as $k => $record) {
54       $num_records++;
55       foreach ($record as $kk => $col) {
56         if ($expected[$k][$kk] != $results[$k][$kk]) {
57           $this->assertTrue(FALSE, 'Results returned in correct order.');
58         }
59       }
60     }
61     $this->assertEqual($num_records, 4, 'Returned the correct number of rows.');
62   }
63
64   /**
65    * Tests ORDER BY descending.
66    */
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();
73
74     $num_records = 0;
75     $last_age = 100000000;
76     foreach ($result as $record) {
77       $num_records++;
78       $this->assertTrue($record->age <= $last_age, 'Results returned in correct order.');
79       $last_age = $record->age;
80     }
81
82     $this->assertEqual($num_records, 4, 'Returned the correct number of rows.');
83   }
84
85 }