Same name and namespace in other branches
  1. 8.9.x core/modules/views/tests/src/Kernel/Handler/ArgumentStringTest.php \Drupal\Tests\views\Kernel\Handler\ArgumentStringTest::testGlossary()
  2. 9 core/modules/views/tests/src/Kernel/Handler/ArgumentStringTest.php \Drupal\Tests\views\Kernel\Handler\ArgumentStringTest::testGlossary()

Tests the glossary feature.

File

core/modules/views/tests/src/Kernel/Handler/ArgumentStringTest.php, line 34

Class

ArgumentStringTest
Tests the core Drupal\views\Plugin\views\argument\StringArgument handler.

Namespace

Drupal\Tests\views\Kernel\Handler

Code

public function testGlossary() {
  $this
    ->installEntitySchema('user');
  $this
    ->installEntitySchema('node');
  NodeType::create([
    'type' => 'page',
    'name' => 'Page',
  ])
    ->save();

  // Setup some nodes, one with a, two with b and three with c.
  $counter = 1;
  foreach ([
    'a',
    'b',
    'c',
  ] as $char) {
    for ($i = 0; $i < $counter; $i++) {
      Node::create([
        'type' => 'page',
        'title' => $char . $this
          ->randomMachineName(),
      ])
        ->save();
    }
  }
  $view = Views::getView('test_glossary');
  $this
    ->executeView($view);
  $count_field = 'nid';
  foreach ($view->result as &$row) {
    if (str_starts_with($view->field['title']
      ->getValue($row), 'a')) {
      $this
        ->assertEquals(1, $row->{$count_field});
    }
    if (str_starts_with($view->field['title']
      ->getValue($row), 'b')) {
      $this
        ->assertEquals(2, $row->{$count_field});
    }
    if (str_starts_with($view->field['title']
      ->getValue($row), 'c')) {
      $this
        ->assertEquals(3, $row->{$count_field});
    }
  }
}