Upgraded drupal core with security updates
[yaffs-website] / web / core / modules / views / tests / src / Unit / ViewsDataHelperTest.php
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 }