Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Tests\views\Unit;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\Tests\UnitTestCase;
|
Chris@0
|
6 use Drupal\views\ViewsDataHelper;
|
Chris@0
|
7 use Drupal\views\Tests\ViewTestData;
|
Chris@0
|
8
|
Chris@0
|
9 /**
|
Chris@0
|
10 * @coversDefaultClass \Drupal\views\ViewsDataHelper
|
Chris@0
|
11 * @group views
|
Chris@0
|
12 */
|
Chris@0
|
13 class ViewsDataHelperTest extends UnitTestCase {
|
Chris@0
|
14
|
Chris@0
|
15 /**
|
Chris@0
|
16 * Returns the views data definition.
|
Chris@0
|
17 *
|
Chris@0
|
18 * @return array
|
Chris@0
|
19 */
|
Chris@0
|
20 protected function viewsData() {
|
Chris@0
|
21 $data = ViewTestData::viewsData();
|
Chris@0
|
22
|
Chris@0
|
23 // Tweak the views data to have a base for testing
|
Chris@0
|
24 // \Drupal\views\ViewsDataHelper::fetchFields().
|
Chris@0
|
25 unset($data['views_test_data']['id']['field']);
|
Chris@0
|
26 unset($data['views_test_data']['name']['argument']);
|
Chris@0
|
27 unset($data['views_test_data']['age']['filter']);
|
Chris@0
|
28 unset($data['views_test_data']['job']['sort']);
|
Chris@0
|
29 $data['views_test_data']['created']['area']['id'] = 'text';
|
Chris@0
|
30 $data['views_test_data']['age']['area']['id'] = 'text';
|
Chris@0
|
31 $data['views_test_data']['age']['area']['sub_type'] = 'header';
|
Chris@0
|
32 $data['views_test_data']['job']['area']['id'] = 'text';
|
Chris@0
|
33 $data['views_test_data']['job']['area']['sub_type'] = ['header', 'footer'];
|
Chris@0
|
34
|
Chris@0
|
35 return $data;
|
Chris@0
|
36 }
|
Chris@0
|
37
|
Chris@0
|
38 /**
|
Chris@0
|
39 * Tests fetchFields.
|
Chris@0
|
40 */
|
Chris@0
|
41 public function testFetchFields() {
|
Chris@0
|
42 $views_data = $this->getMockBuilder('Drupal\views\ViewsData')
|
Chris@0
|
43 ->disableOriginalConstructor()
|
Chris@0
|
44 ->getMock();
|
Chris@0
|
45 $views_data->expects($this->once())
|
Chris@0
|
46 ->method('get')
|
Chris@0
|
47 ->will($this->returnValue($this->viewsData()));
|
Chris@0
|
48
|
Chris@0
|
49 $data_helper = new ViewsDataHelper($views_data);
|
Chris@0
|
50
|
Chris@0
|
51 $expected = [
|
Chris@0
|
52 'field' => [
|
Chris@0
|
53 'age',
|
Chris@0
|
54 'created',
|
Chris@0
|
55 'job',
|
Chris@0
|
56 'name',
|
Chris@0
|
57 'status',
|
Chris@0
|
58 ],
|
Chris@0
|
59 'argument' => [
|
Chris@0
|
60 'age',
|
Chris@0
|
61 'created',
|
Chris@0
|
62 'id',
|
Chris@0
|
63 'job',
|
Chris@0
|
64 ],
|
Chris@0
|
65 'filter' => [
|
Chris@0
|
66 'created',
|
Chris@0
|
67 'id',
|
Chris@0
|
68 'job',
|
Chris@0
|
69 'name',
|
Chris@0
|
70 'status',
|
Chris@0
|
71 ],
|
Chris@0
|
72 'sort' => [
|
Chris@0
|
73 'age',
|
Chris@0
|
74 'created',
|
Chris@0
|
75 'id',
|
Chris@0
|
76 'name',
|
Chris@0
|
77 'status',
|
Chris@0
|
78 ],
|
Chris@0
|
79 'area' => [
|
Chris@0
|
80 'age',
|
Chris@0
|
81 'created',
|
Chris@0
|
82 'job',
|
Chris@0
|
83 ],
|
Chris@0
|
84 'header' => [
|
Chris@0
|
85 'age',
|
Chris@0
|
86 'created',
|
Chris@0
|
87 'job',
|
Chris@0
|
88 ],
|
Chris@0
|
89 'footer' => [
|
Chris@0
|
90 'age',
|
Chris@0
|
91 'created',
|
Chris@0
|
92 'job',
|
Chris@0
|
93 ],
|
Chris@0
|
94 ];
|
Chris@0
|
95
|
Chris@0
|
96 $handler_types = ['field', 'argument', 'filter', 'sort', 'area'];
|
Chris@0
|
97 foreach ($handler_types as $handler_type) {
|
Chris@0
|
98 $fields = $data_helper->fetchFields('views_test_data', $handler_type);
|
Chris@0
|
99 $expected_keys = $expected[$handler_type];
|
Chris@0
|
100 array_walk($expected_keys, function (&$item) {
|
Chris@0
|
101 $item = "views_test_data.$item";
|
Chris@0
|
102 });
|
Chris@0
|
103 $this->assertEquals($expected_keys, array_keys($fields), "Handlers of type $handler_type are not listed as expected");
|
Chris@0
|
104 }
|
Chris@0
|
105
|
Chris@0
|
106 // Check for subtype filtering, so header and footer.
|
Chris@0
|
107 foreach (['header', 'footer'] as $sub_type) {
|
Chris@0
|
108 $fields = $data_helper->fetchFields('views_test_data', 'area', FALSE, $sub_type);
|
Chris@0
|
109
|
Chris@0
|
110 $expected_keys = $expected[$sub_type];
|
Chris@0
|
111 array_walk($expected_keys, function (&$item) {
|
Chris@0
|
112 $item = "views_test_data.$item";
|
Chris@0
|
113 });
|
Chris@0
|
114 $this->assertEquals($expected_keys, array_keys($fields), "Sub_type $sub_type is not filtered as expected.");
|
Chris@0
|
115 }
|
Chris@0
|
116 }
|
Chris@0
|
117
|
Chris@0
|
118 }
|