function ViewsDataHelperTest::testFetchFields

Same name and namespace in other branches
  1. 9 core/modules/views/tests/src/Unit/ViewsDataHelperTest.php \Drupal\Tests\views\Unit\ViewsDataHelperTest::testFetchFields()
  2. 8.9.x core/modules/views/tests/src/Unit/ViewsDataHelperTest.php \Drupal\Tests\views\Unit\ViewsDataHelperTest::testFetchFields()
  3. 10 core/modules/views/tests/src/Unit/ViewsDataHelperTest.php \Drupal\Tests\views\Unit\ViewsDataHelperTest::testFetchFields()

Tests fetchFields.

File

core/modules/views/tests/src/Unit/ViewsDataHelperTest.php, line 43

Class

ViewsDataHelperTest
@coversDefaultClass <a href="/api/drupal/core%21modules%21views%21src%21ViewsDataHelper.php/class/ViewsDataHelper/11.x" title="Defines a helper class for stuff related to views data." class="local">\Drupal\views\ViewsDataHelper</a> @group views

Namespace

Drupal\Tests\views\Unit

Code

public function testFetchFields() : void {
    $views_data = $this->getMockBuilder('Drupal\\views\\ViewsData')
        ->disableOriginalConstructor()
        ->getMock();
    $views_data->expects($this->once())
        ->method('getAll')
        ->willReturn($this->viewsData());
    $data_helper = new ViewsDataHelper($views_data);
    $expected = [
        'field' => [
            'age',
            'created',
            'job',
            'name',
            'status',
        ],
        'argument' => [
            'age',
            'created',
            'id',
            'job',
        ],
        'filter' => [
            'created',
            'id',
            'job',
            'name',
            'status',
        ],
        'sort' => [
            'age',
            'created',
            'id',
            'name',
            'status',
        ],
        'area' => [
            'age',
            'created',
            'job',
        ],
        'header' => [
            'age',
            'created',
            'job',
        ],
        'footer' => [
            'age',
            'created',
            'job',
        ],
    ];
    $handler_types = [
        '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");
    }
    // Check for subtype filtering, so header and footer.
    foreach ([
        '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.");
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.