You are here

public function ViewsHooksTest::testHooks in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/views/src/Tests/ViewsHooksTest.php \Drupal\views\Tests\ViewsHooksTest::testHooks()

Tests the hooks.

File

core/modules/views/src/Tests/ViewsHooksTest.php, line 67
Contains \Drupal\views\Tests\ViewsHooksTest.

Class

ViewsHooksTest
Tests that views hooks are registered when defined in $module.views.inc.

Namespace

Drupal\views\Tests

Code

public function testHooks() {
  $view = Views::getView('test_view');
  $view
    ->setDisplay();

  // Test each hook is found in the implementations array and is invoked.
  foreach (static::$hooks as $hook => $type) {
    $this
      ->assertTrue($this->moduleHandler
      ->implementsHook('views_test_data', $hook), format_string('The hook @hook was registered.', array(
      '@hook' => $hook,
    )));
    if ($hook == 'views_post_render') {
      $this->moduleHandler
        ->invoke('views_test_data', $hook, array(
        $view,
        &$view->display_handler->output,
        $view->display_handler
          ->getPlugin('cache'),
      ));
      continue;
    }
    switch ($type) {
      case 'view':
        $this->moduleHandler
          ->invoke('views_test_data', $hook, array(
          $view,
        ));
        break;
      case 'alter':
        $data = array();
        $this->moduleHandler
          ->invoke('views_test_data', $hook, array(
          $data,
        ));
        break;
      default:
        $this->moduleHandler
          ->invoke('views_test_data', $hook);
    }
    $this
      ->assertTrue($this->container
      ->get('state')
      ->get('views_hook_test_' . $hook), format_string('The %hook hook was invoked.', array(
      '%hook' => $hook,
    )));

    // Reset the module implementations cache, so we ensure that the
    // .views.inc file is loaded actively.
    $this->moduleHandler
      ->resetImplementations();
  }
}