annotate core/modules/views/tests/src/Unit/ViewsDataHelperTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 4c8ae668cc8c
children
rev   line source
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 }