You are here

public function DisplayPageTest::testEmptyRow in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/views/tests/src/Kernel/Plugin/DisplayPageTest.php \Drupal\Tests\views\Kernel\Plugin\DisplayPageTest::testEmptyRow()

Tests the templates with empty rows.

File

core/modules/views/tests/src/Kernel/Plugin/DisplayPageTest.php, line 227

Class

DisplayPageTest
Tests the page display plugin.

Namespace

Drupal\Tests\views\Kernel\Plugin

Code

public function testEmptyRow() {
  $view = Views::getView('test_page_display');
  $view
    ->initDisplay();
  $view
    ->newDisplay('page', 'Page', 'empty_row');
  $view
    ->save();
  $styles = [
    'default' => '//div[@class="views-row"]',
    'grid' => '//div[contains(@class, "views-col")]',
    'html_list' => '//div[@class="item-list"]//li',
  ];
  $themes = [
    'bartik',
    'classy',
    'seven',
    'stable',
    'stark',
  ];
  foreach ($themes as $theme) {
    \Drupal::service('theme_installer')
      ->install([
      $theme,
    ]);
    \Drupal::theme()
      ->setActiveTheme(\Drupal::service('theme.initialization')
      ->initTheme($theme));
    foreach ($styles as $type => $xpath) {
      $view = Views::getView('test_page_display');
      $view->storage
        ->invalidateCaches();
      $view
        ->initDisplay();
      $view
        ->setDisplay('empty_row');
      $view->displayHandlers
        ->get('empty_row')->default_display->options['style']['type'] = $type;
      $view
        ->initStyle();
      $this
        ->executeView($view);
      $output = $view
        ->preview();
      $output = \Drupal::service('renderer')
        ->renderRoot($output);
      $this
        ->setRawContent($output);
      $this
        ->assertCount(5, $this
        ->xpath("{$xpath}[not(text()) and not(node())]"), "Empty rows in theme '{$theme}', type '{$type}'.");
    }
  }
}