function FilterAndArgumentUserUidTest::testHandlers
Same name in other branches
- 9 core/modules/comment/tests/src/Kernel/Views/FilterAndArgumentUserUidTest.php \Drupal\Tests\comment\Kernel\Views\FilterAndArgumentUserUidTest::testHandlers()
- 8.9.x core/modules/comment/tests/src/Kernel/Views/FilterAndArgumentUserUidTest.php \Drupal\Tests\comment\Kernel\Views\FilterAndArgumentUserUidTest::testHandlers()
- 11.x core/modules/comment/tests/src/Kernel/Views/FilterAndArgumentUserUidTest.php \Drupal\Tests\comment\Kernel\Views\FilterAndArgumentUserUidTest::testHandlers()
Tests the user posted or commented filter and argument handlers.
File
-
core/
modules/ comment/ tests/ src/ Kernel/ Views/ FilterAndArgumentUserUidTest.php, line 55
Class
- FilterAndArgumentUserUidTest
- Tests the user posted or commented filter and argument handlers.
Namespace
Drupal\Tests\comment\Kernel\ViewsCode
public function testHandlers() : void {
$this->installEntitySchema('user');
$this->installEntitySchema('node');
$this->installEntitySchema('comment');
$this->installSchema('comment', [
'comment_entity_statistics',
]);
$this->installConfig([
'filter',
]);
NodeType::create([
'type' => 'page',
'name' => 'Page',
])->save();
FieldStorageConfig::create([
'type' => 'text_long',
'entity_type' => 'comment',
'field_name' => 'comment_body',
])->save();
$this->addDefaultCommentField('node', 'page', 'comment');
$account = $this->createUser();
$other_account = $this->createUser();
$node_authored_by_account = $this->createNode([
'uid' => $account->id(),
'title' => "authored by {$account->id()}",
]);
$node_commented_by_account = $this->createNode([
'title' => "commented by {$account->id()}",
]);
$arbitrary_node = $this->createNode();
// Comment added by $account.
Comment::create([
'uid' => $account->id(),
'entity_id' => $node_commented_by_account->id(),
'entity_type' => 'node',
'field_name' => 'comment',
])
->save();
// Comment added by $other_account on $node_commented_by_account
Comment::create([
'uid' => $other_account->id(),
'entity_id' => $node_commented_by_account->id(),
'entity_type' => 'node',
'field_name' => 'comment',
])
->save();
// Comment added by $other_account on an arbitrary node.
Comment::create([
'uid' => $other_account->id(),
'entity_id' => $arbitrary_node->id(),
'entity_type' => 'node',
'field_name' => 'comment',
])
->save();
ViewTestData::createTestViews(static::class, [
'comment_test_views',
]);
$expected_result = [
[
'nid' => $node_authored_by_account->id(),
'title' => "authored by {$account->id()}",
],
[
'nid' => $node_commented_by_account->id(),
'title' => "commented by {$account->id()}",
],
];
$column_map = [
'nid' => 'nid',
'title' => 'title',
];
$view = Views::getView('test_comment_user_uid');
// Test the argument handler.
$view->preview(NULL, [
$account->id(),
]);
$this->assertIdenticalResultset($view, $expected_result, $column_map);
// Test the filter handler. Reuse the same view but replace the argument
// handler with a filter handler.
$view->removeHandler('default', 'argument', 'uid_touch');
$options = [
'id' => 'uid_touch',
'table' => 'node_field_data',
'field' => 'uid_touch',
'value' => [
$account->id(),
],
];
$view->addHandler('default', 'filter', 'node_field_data', 'uid_touch', $options);
$view->preview();
$this->assertIdenticalResultset($view, $expected_result, $column_map);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.