public function ViewsDataTest::testViewsFetchFields

Tests the views_fetch_fields function().

File

drupal/core/modules/views/lib/Drupal/views/Tests/ViewsDataTest.php, line 71
Definition of Drupal\views\Tests\ViewsDataTest.

Class

ViewsDataTest
Tests the fetching of views data.

Namespace

Drupal\views\Tests

Code

public function testViewsFetchFields() {
  module_load_include('inc', 'views_ui', 'admin');
  $expected = array(
    'field' => array(
      'name',
      'age',
      'job',
      'created',
    ),
    'argument' => array(
      'id',
      'age',
      'job',
      'created',
    ),
    'filter' => array(
      'id',
      'name',
      'job',
      'created',
    ),
    'sort' => array(
      'id',
      'name',
      'age',
      'created',
    ),
    'area' => array(
      'created',
      'job',
      'age',
    ),
    'header' => array(
      'created',
      'job',
      'age',
    ),
    'footer' => array(
      'created',
      'job',
    ),
  );
  $handler_types = array(
    'field',
    'argument',
    'filter',
    'sort',
    'area',
  );
  foreach ($handler_types as $handler_type) {
    $fields = views_fetch_fields('views_test_data', $handler_type);
    $expected_keys = array_walk($expected[$handler_type], function (&$item) {
      $item = "views_test_data.{$item}";
    });
    $this
      ->assertEqual($expected_keys, array_keys($fields), format_string('Handlers of type @handler_type are listed as expected.', array(
      '@handler_type' => $handler_type,
    )));
  }

  // Check for subtype filtering, so header and footer.
  foreach (array(
    'header',
    'footer',
  ) as $sub_type) {
    $fields = views_fetch_fields('views_test_data', 'area', FALSE, $sub_type);
    $expected_keys = array_walk($expected[$sub_type], function (&$item) {
      $item = "views_test_data.{$item}";
    });
    $this
      ->assertEqual($expected_keys, array_keys($fields), format_string('Sub_type @sub_type is filtered as expected.', array(
      '@sub_type' => $sub_type,
    )));
  }
}