function HistoryTimestampTest::testHandlers

Same name and namespace in other branches
  1. 9 core/modules/history/tests/src/Kernel/Views/HistoryTimestampTest.php \Drupal\Tests\history\Kernel\Views\HistoryTimestampTest::testHandlers()
  2. 8.9.x core/modules/history/tests/src/Kernel/Views/HistoryTimestampTest.php \Drupal\Tests\history\Kernel\Views\HistoryTimestampTest::testHandlers()
  3. 11.x core/modules/history/tests/src/Kernel/Views/HistoryTimestampTest.php \Drupal\Tests\history\Kernel\Views\HistoryTimestampTest::testHandlers()

Tests the handlers.

File

core/modules/history/tests/src/Kernel/Views/HistoryTimestampTest.php, line 52

Class

HistoryTimestampTest
Tests the history timestamp handlers.

Namespace

Drupal\Tests\history\Kernel\Views

Code

public function testHandlers() : void {
  $nodes = [];
  $node = Node::create([
    'title' => 'n1',
    'type' => 'default',
  ]);
  $node->save();
  $nodes[] = $node;
  $node = Node::create([
    'title' => 'n2',
    'type' => 'default',
  ]);
  $node->save();
  $nodes[] = $node;
  $account = User::create([
    'name' => 'admin',
  ]);
  $account->save();
  \Drupal::currentUser()->setAccount($account);
  $connection = Database::getConnection();
  $requestTime = \Drupal::time()->getRequestTime();
  $connection->insert('history')
    ->fields([
    'uid' => $account->id(),
    'nid' => $nodes[0]->id(),
    'timestamp' => $requestTime - 100,
  ])
    ->execute();
  $connection->insert('history')
    ->fields([
    'uid' => $account->id(),
    'nid' => $nodes[1]->id(),
    'timestamp' => $requestTime + 100,
  ])
    ->execute();
  $column_map = [
    'nid' => 'nid',
  ];
  // Test the history field.
  $view = Views::getView('test_history');
  $view->setDisplay('page_1');
  $this->executeView($view);
  $this->assertCount(2, $view->result);
  $output = $view->preview();
  $this->setRawContent(\Drupal::service('renderer')->renderRoot($output));
  $result = $this->xpath('//span[@class=:class]', [
    ':class' => 'marker',
  ]);
  $this->assertCount(1, $result, 'Just one node is marked as new');
  // Test the history filter.
  $view = Views::getView('test_history');
  $view->setDisplay('page_2');
  $this->executeView($view);
  $this->assertCount(1, $view->result);
  $this->assertIdenticalResultset($view, [
    [
      'nid' => $nodes[0]->id(),
    ],
  ], $column_map);
  // Install Comment module and make sure that content types without comment
  // field will not break the view.
  // See \Drupal\history\Plugin\views\filter\HistoryUserTimestamp::query()
  \Drupal::service('module_installer')->install([
    'comment',
  ]);
  $view = Views::getView('test_history');
  $view->setDisplay('page_2');
  $this->executeView($view);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.