Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Tests\views\Kernel;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\views\Views;
|
Chris@0
|
6
|
Chris@0
|
7 /**
|
Chris@0
|
8 * A basic query test for Views.
|
Chris@0
|
9 *
|
Chris@0
|
10 * @group views
|
Chris@0
|
11 */
|
Chris@0
|
12 class BasicTest extends ViewsKernelTestBase {
|
Chris@0
|
13
|
Chris@0
|
14 /**
|
Chris@0
|
15 * Views used by this test.
|
Chris@0
|
16 *
|
Chris@0
|
17 * @var array
|
Chris@0
|
18 */
|
Chris@0
|
19 public static $testViews = ['test_view', 'test_simple_argument'];
|
Chris@0
|
20
|
Chris@0
|
21 /**
|
Chris@0
|
22 * Tests a trivial result set.
|
Chris@0
|
23 */
|
Chris@0
|
24 public function testSimpleResultSet() {
|
Chris@0
|
25 $view = Views::getView('test_view');
|
Chris@0
|
26 $view->setDisplay();
|
Chris@0
|
27
|
Chris@0
|
28 // Execute the view.
|
Chris@0
|
29 $this->executeView($view);
|
Chris@0
|
30
|
Chris@0
|
31 // Verify the result.
|
Chris@0
|
32 $this->assertEqual(5, count($view->result), 'The number of returned rows match.');
|
Chris@0
|
33 $this->assertIdenticalResultset($view, $this->dataSet(), [
|
Chris@0
|
34 'views_test_data_name' => 'name',
|
Chris@0
|
35 'views_test_data_age' => 'age',
|
Chris@0
|
36 ]);
|
Chris@0
|
37 }
|
Chris@0
|
38
|
Chris@0
|
39 /**
|
Chris@0
|
40 * Tests filtering of the result set.
|
Chris@0
|
41 */
|
Chris@0
|
42 public function testSimpleFiltering() {
|
Chris@0
|
43 $view = Views::getView('test_view');
|
Chris@0
|
44 $view->setDisplay();
|
Chris@0
|
45
|
Chris@0
|
46 // Add a filter.
|
Chris@0
|
47 $view->displayHandlers->get('default')->overrideOption('filters', [
|
Chris@0
|
48 'age' => [
|
Chris@0
|
49 'operator' => '<',
|
Chris@0
|
50 'value' => [
|
Chris@0
|
51 'value' => '28',
|
Chris@0
|
52 'min' => '',
|
Chris@0
|
53 'max' => '',
|
Chris@0
|
54 ],
|
Chris@0
|
55 'group' => '0',
|
Chris@0
|
56 'exposed' => FALSE,
|
Chris@0
|
57 'expose' => [
|
Chris@0
|
58 'operator' => FALSE,
|
Chris@0
|
59 'label' => '',
|
Chris@0
|
60 ],
|
Chris@0
|
61 'id' => 'age',
|
Chris@0
|
62 'table' => 'views_test_data',
|
Chris@0
|
63 'field' => 'age',
|
Chris@0
|
64 'relationship' => 'none',
|
Chris@0
|
65 ],
|
Chris@0
|
66 ]);
|
Chris@0
|
67
|
Chris@0
|
68 // Execute the view.
|
Chris@0
|
69 $this->executeView($view);
|
Chris@0
|
70
|
Chris@0
|
71 // Build the expected result.
|
Chris@0
|
72 $dataset = [
|
Chris@0
|
73 [
|
Chris@0
|
74 'id' => 1,
|
Chris@0
|
75 'name' => 'John',
|
Chris@0
|
76 'age' => 25,
|
Chris@0
|
77 ],
|
Chris@0
|
78 [
|
Chris@0
|
79 'id' => 2,
|
Chris@0
|
80 'name' => 'George',
|
Chris@0
|
81 'age' => 27,
|
Chris@0
|
82 ],
|
Chris@0
|
83 [
|
Chris@0
|
84 'id' => 4,
|
Chris@0
|
85 'name' => 'Paul',
|
Chris@0
|
86 'age' => 26,
|
Chris@0
|
87 ],
|
Chris@0
|
88 ];
|
Chris@0
|
89
|
Chris@0
|
90 // Verify the result.
|
Chris@0
|
91 $this->assertEqual(3, count($view->result), 'The number of returned rows match.');
|
Chris@0
|
92 $this->assertIdenticalResultSet($view, $dataset, [
|
Chris@0
|
93 'views_test_data_name' => 'name',
|
Chris@0
|
94 'views_test_data_age' => 'age',
|
Chris@0
|
95 ]);
|
Chris@0
|
96 }
|
Chris@0
|
97
|
Chris@0
|
98 /**
|
Chris@0
|
99 * Tests simple argument.
|
Chris@0
|
100 */
|
Chris@0
|
101 public function testSimpleArgument() {
|
Chris@0
|
102 // Execute with a view
|
Chris@0
|
103 $view = Views::getView('test_simple_argument');
|
Chris@0
|
104 $view->setArguments([27]);
|
Chris@0
|
105 $this->executeView($view);
|
Chris@0
|
106
|
Chris@0
|
107 // Build the expected result.
|
Chris@0
|
108 $dataset = [
|
Chris@0
|
109 [
|
Chris@0
|
110 'id' => 2,
|
Chris@0
|
111 'name' => 'George',
|
Chris@0
|
112 'age' => 27,
|
Chris@0
|
113 ],
|
Chris@0
|
114 ];
|
Chris@0
|
115
|
Chris@0
|
116 // Verify the result.
|
Chris@0
|
117 $this->assertEqual(1, count($view->result), 'The number of returned rows match.');
|
Chris@0
|
118 $this->assertIdenticalResultSet($view, $dataset, [
|
Chris@0
|
119 'views_test_data_name' => 'name',
|
Chris@0
|
120 'views_test_data_age' => 'age',
|
Chris@0
|
121 ]);
|
Chris@0
|
122
|
Chris@0
|
123 // Test "show all" if no argument is present.
|
Chris@0
|
124 $view = Views::getView('test_simple_argument');
|
Chris@0
|
125 $this->executeView($view);
|
Chris@0
|
126
|
Chris@0
|
127 // Build the expected result.
|
Chris@0
|
128 $dataset = $this->dataSet();
|
Chris@0
|
129
|
Chris@0
|
130 $this->assertEqual(5, count($view->result), 'The number of returned rows match.');
|
Chris@0
|
131 $this->assertIdenticalResultSet($view, $dataset, [
|
Chris@0
|
132 'views_test_data_name' => 'name',
|
Chris@0
|
133 'views_test_data_age' => 'age',
|
Chris@0
|
134 ]);
|
Chris@0
|
135 }
|
Chris@0
|
136
|
Chris@0
|
137 }
|