comparison core/modules/views/tests/src/Unit/ViewsDataHelperTest.php @ 0:4c8ae668cc8c

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