You are here

class StyleSummaryTest in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/views/tests/src/Functional/Plugin/StyleSummaryTest.php \Drupal\Tests\views\Functional\Plugin\StyleSummaryTest
  2. 9 core/modules/views/tests/src/Functional/Plugin/StyleSummaryTest.php \Drupal\Tests\views\Functional\Plugin\StyleSummaryTest

Tests the summary style plugin.

@group views

Hierarchy

  • class \Drupal\Tests\views\Functional\Plugin\StyleSummaryTest extends \Drupal\Tests\views\Functional\ViewTestBase

Expanded class hierarchy of StyleSummaryTest

File

core/modules/views/tests/src/Functional/Plugin/StyleSummaryTest.php, line 13

Namespace

Drupal\Tests\views\Functional\Plugin
View source
class StyleSummaryTest extends ViewTestBase {

  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'entity_test',
    'views_ui',
  ];

  /**
   * {@inheritdoc}
   */
  protected $defaultTheme = 'classy';

  /**
   * {@inheritdoc}
   */
  public static $testViews = [
    'test_summary',
  ];

  /**
   * @var \Drupal\entity_test\Entity\EntityTest[]
   */
  protected $entities = [];

  /**
   * {@inheritdoc}
   */
  protected function setUp($import_test_views = TRUE, $modules = [
    'views_test_config',
  ]) : void {
    parent::setUp($import_test_views, $modules);

    // Create 5 entities per bundle, to allow a summary overview per bundle.
    for ($i = 0; $i < 5; $i++) {
      for ($j = 0; $j < 5; $j++) {
        $this->entities[] = $entity = EntityTest::create([
          'name' => 'Entity ' . ($i * 5 + $j),
          'type' => 'type' . $i,
        ]);
        $entity
          ->save();
      }
    }
    $views_user = $this
      ->drupalCreateUser([
      'administer views',
    ]);
    $this
      ->drupalLogin($views_user);
  }

  /**
   * Tests a summary view.
   */
  public function testSummaryView() {
    $this
      ->drupalGet('test-summary');

    // Ensure styles are properly added for summary views.
    $this
      ->assertSession()
      ->responseContains('stable/css/views/views.module.css');
    $summary_list = $this
      ->cssSelect('ul.views-summary li');
    $this
      ->assertCount(4, $summary_list);
    foreach ($summary_list as $summary_list_item) {
      $this
        ->assertEquals('(5)', trim(explode(' ', $summary_list_item
        ->getText())[1]));
    }
    $summary_links = $this
      ->cssSelect('ul.views-summary a');
    $this
      ->assertCount(4, $summary_links);
    foreach ($summary_links as $index => $summary_link) {
      $this
        ->assertEquals('type' . $index, trim($summary_link
        ->getText()));
    }
    $this
      ->clickLink('type1');
    $entries = $this
      ->cssSelect('div.view-content div.views-row');
    $this
      ->assertCount(2, $entries);

    // Add a base path to the summary settings.
    $edit = [
      'options[summary][options][default_summary][base_path]' => 'test-summary',
    ];
    $this
      ->drupalGet('admin/structure/views/nojs/handler/test_summary/page_1/argument/type');
    $this
      ->submitForm($edit, 'Apply');
    $this
      ->submitForm([], 'Save');

    // Test that the links still work.
    $this
      ->drupalGet('test-summary');
    $this
      ->clickLink('type1');
    $entries = $this
      ->cssSelect('div.view-content div.views-row');
    $this
      ->assertCount(2, $entries);

    // Change the summary display to an unformatted list displaying 3 items.
    $edit = [
      'options[summary][format]' => 'unformatted_summary',
      'options[summary][options][unformatted_summary][override]' => '1',
      'options[summary][options][unformatted_summary][items_per_page]' => '3',
    ];
    $this
      ->drupalGet('admin/structure/views/nojs/handler/test_summary/page_1/argument/type');
    $this
      ->submitForm($edit, 'Apply');
    $this
      ->submitForm([], 'Save');
    $this
      ->drupalGet('admin/structure/views/nojs/handler/test_summary/page_1/argument/type');
    $this
      ->drupalGet('test-summary');
    $summary_list = $this
      ->cssSelect('.views-summary-unformatted');
    $this
      ->assertCount(3, $summary_list);
    foreach ($summary_list as $summary_list_item) {
      $this
        ->assertEquals('(5)', trim(explode(' ', $summary_list_item
        ->getText())[1]));
    }
    $summary_links = $this
      ->cssSelect('.views-summary-unformatted a');
    $this
      ->assertCount(3, $summary_links);
    foreach ($summary_links as $index => $summary_link) {
      $this
        ->assertEquals('type' . $index, trim($summary_link
        ->getText()));
    }
    $this
      ->clickLink('type1');
    $entries = $this
      ->cssSelect('div.view-content div.views-row');
    $this
      ->assertCount(2, $entries);

    // Add a base path to the summary settings.
    $edit = [
      'options[summary][options][unformatted_summary][base_path]' => 'test-summary',
    ];
    $this
      ->drupalGet('admin/structure/views/nojs/handler/test_summary/page_1/argument/type');
    $this
      ->submitForm($edit, 'Apply');
    $this
      ->submitForm([], 'Save');

    // Test that the links still work.
    $this
      ->drupalGet('test-summary');
    $this
      ->clickLink('type1');
    $entries = $this
      ->cssSelect('div.view-content div.views-row');
    $this
      ->assertCount(2, $entries);

    // Set base_path to an unknown path and test that the links lead to the
    // front page.
    $edit = [
      'options[summary][options][unformatted_summary][base_path]' => 'unknown-path',
    ];
    $this
      ->drupalGet('admin/structure/views/nojs/handler/test_summary/page_1/argument/type');
    $this
      ->submitForm($edit, 'Apply');
    $this
      ->submitForm([], 'Save');
    $this
      ->drupalGet('test-summary');
    $this
      ->assertSession()
      ->linkByHrefExists('/');
  }

}

Members