Version 1
[yaffs-website] / web / core / modules / views / tests / src / Kernel / Handler / SortTest.php
1 <?php
2
3 namespace Drupal\Tests\views\Kernel\Handler;
4
5 use Drupal\Tests\views\Kernel\ViewsKernelTestBase;
6 use Drupal\views\Views;
7
8 /**
9  * Tests for core Drupal\views\Plugin\views\sort\SortPluginBase handler.
10  *
11  * @group views
12  */
13 class SortTest extends ViewsKernelTestBase {
14
15   /**
16    * Views used by this test.
17    *
18    * @var array
19    */
20   public static $testViews = ['test_view'];
21
22   /**
23    * Tests numeric ordering of the result set.
24    */
25   public function testNumericOrdering() {
26     $view = Views::getView('test_view');
27     $view->setDisplay();
28
29     // Change the ordering
30     $view->displayHandlers->get('default')->overrideOption('sorts', [
31       'age' => [
32         'order' => 'ASC',
33         'id' => 'age',
34         'table' => 'views_test_data',
35         'field' => 'age',
36         'relationship' => 'none',
37       ],
38     ]);
39
40     // Execute the view.
41     $this->executeView($view);
42
43     // Verify the result.
44     $this->assertEqual(count($this->dataSet()), count($view->result), 'The number of returned rows match.');
45     $this->assertIdenticalResultset($view, $this->orderResultSet($this->dataSet(), 'age'), [
46       'views_test_data_name' => 'name',
47       'views_test_data_age' => 'age',
48     ]);
49
50     $view->destroy();
51     $view->setDisplay();
52
53     // Reverse the ordering
54     $view->displayHandlers->get('default')->overrideOption('sorts', [
55       'age' => [
56         'order' => 'DESC',
57         'id' => 'age',
58         'table' => 'views_test_data',
59         'field' => 'age',
60         'relationship' => 'none',
61       ],
62     ]);
63
64     // Execute the view.
65     $this->executeView($view);
66
67     // Verify the result.
68     $this->assertEqual(count($this->dataSet()), count($view->result), 'The number of returned rows match.');
69     $this->assertIdenticalResultset($view, $this->orderResultSet($this->dataSet(), 'age', TRUE), [
70       'views_test_data_name' => 'name',
71       'views_test_data_age' => 'age',
72     ]);
73   }
74
75   /**
76    * Tests string ordering of the result set.
77    */
78   public function testStringOrdering() {
79     $view = Views::getView('test_view');
80     $view->setDisplay();
81
82     // Change the ordering
83     $view->displayHandlers->get('default')->overrideOption('sorts', [
84       'name' => [
85         'order' => 'ASC',
86         'id' => 'name',
87         'table' => 'views_test_data',
88         'field' => 'name',
89         'relationship' => 'none',
90       ],
91     ]);
92
93     // Execute the view.
94     $this->executeView($view);
95
96     // Verify the result.
97     $this->assertEqual(count($this->dataSet()), count($view->result), 'The number of returned rows match.');
98     $this->assertIdenticalResultset($view, $this->orderResultSet($this->dataSet(), 'name'), [
99       'views_test_data_name' => 'name',
100       'views_test_data_age' => 'age',
101     ]);
102
103     $view->destroy();
104     $view->setDisplay();
105
106     // Reverse the ordering
107     $view->displayHandlers->get('default')->overrideOption('sorts', [
108       'name' => [
109         'order' => 'DESC',
110         'id' => 'name',
111         'table' => 'views_test_data',
112         'field' => 'name',
113         'relationship' => 'none',
114       ],
115     ]);
116
117     // Execute the view.
118     $this->executeView($view);
119
120     // Verify the result.
121     $this->assertEqual(count($this->dataSet()), count($view->result), 'The number of returned rows match.');
122     $this->assertIdenticalResultset($view, $this->orderResultSet($this->dataSet(), 'name', TRUE), [
123       'views_test_data_name' => 'name',
124       'views_test_data_age' => 'age',
125     ]);
126   }
127
128 }