View source
<?php
namespace Drupal\Tests\views\Unit;
use Drupal\Tests\UnitTestCase;
use Drupal\views\ViewsDataHelper;
use Drupal\views\Tests\ViewTestData;
class ViewsDataHelperTest extends UnitTestCase {
protected function viewsData() {
$data = ViewTestData::viewsData();
unset($data['views_test_data']['id']['field']);
unset($data['views_test_data']['name']['argument']);
unset($data['views_test_data']['age']['filter']);
unset($data['views_test_data']['job']['sort']);
$data['views_test_data']['created']['area']['id'] = 'text';
$data['views_test_data']['age']['area']['id'] = 'text';
$data['views_test_data']['age']['area']['sub_type'] = 'header';
$data['views_test_data']['job']['area']['id'] = 'text';
$data['views_test_data']['job']['area']['sub_type'] = array(
'header',
'footer',
);
return $data;
}
public function testFetchFields() {
$views_data = $this
->getMockBuilder('Drupal\\views\\ViewsData')
->disableOriginalConstructor()
->getMock();
$views_data
->expects($this
->once())
->method('get')
->will($this
->returnValue($this
->viewsData()));
$data_helper = new ViewsDataHelper($views_data);
$expected = array(
'field' => array(
'age',
'created',
'job',
'name',
'status',
),
'argument' => array(
'age',
'created',
'id',
'job',
),
'filter' => array(
'created',
'id',
'job',
'name',
'status',
),
'sort' => array(
'age',
'created',
'id',
'name',
'status',
),
'area' => array(
'age',
'created',
'job',
),
'header' => array(
'age',
'created',
'job',
),
'footer' => array(
'age',
'created',
'job',
),
);
$handler_types = array(
'field',
'argument',
'filter',
'sort',
'area',
);
foreach ($handler_types as $handler_type) {
$fields = $data_helper
->fetchFields('views_test_data', $handler_type);
$expected_keys = $expected[$handler_type];
array_walk($expected_keys, function (&$item) {
$item = "views_test_data.{$item}";
});
$this
->assertEquals($expected_keys, array_keys($fields), "Handlers of type {$handler_type} are not listed as expected");
}
foreach (array(
'header',
'footer',
) as $sub_type) {
$fields = $data_helper
->fetchFields('views_test_data', 'area', FALSE, $sub_type);
$expected_keys = $expected[$sub_type];
array_walk($expected_keys, function (&$item) {
$item = "views_test_data.{$item}";
});
$this
->assertEquals($expected_keys, array_keys($fields), "Sub_type {$sub_type} is not filtered as expected.");
}
}
}