class RelationshipNodeTermDataTest
Same name and namespace in other branches
- 11.x core/modules/taxonomy/tests/src/Kernel/Views/RelationshipNodeTermDataTest.php \Drupal\Tests\taxonomy\Kernel\Views\RelationshipNodeTermDataTest
Tests the taxonomy term on node relationship handler.
@group taxonomy
Hierarchy
- class \Drupal\Tests\BrowserTestBase uses \Drupal\Core\Test\FunctionalTestSetupTrait, \Drupal\Tests\UiHelperTrait, \Drupal\Core\Test\TestSetupTrait, \Drupal\Tests\block\Traits\BlockCreationTrait, \Drupal\FunctionalTests\AssertLegacyTrait, \Drupal\Tests\RandomGeneratorTrait, \Drupal\Tests\node\Traits\NodeCreationTrait, \Drupal\Tests\node\Traits\ContentTypeCreationTrait, \Drupal\Tests\ConfigTestTrait, \Drupal\Tests\TestRequirementsTrait, \Drupal\Tests\user\Traits\UserCreationTrait, \Drupal\Tests\XdebugRequestTrait, \Drupal\Tests\Traits\PhpUnitWarnings, \Drupal\Tests\PhpUnitCompatibilityTrait, \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait, \Drupal\Tests\ExtensionListTestTrait implements \PHPUnit\Framework\TestCase
- class \Drupal\Tests\views\Functional\ViewTestBase uses \Drupal\views\Tests\ViewResultAssertionTrait implements \Drupal\Tests\BrowserTestBase
- class \Drupal\Tests\taxonomy\Functional\Views\TaxonomyTestBase uses \Drupal\Tests\field\Traits\EntityReferenceTestTrait implements \Drupal\Tests\views\Functional\ViewTestBase
- class \Drupal\Tests\taxonomy\Functional\Views\RelationshipNodeTermDataTest implements \Drupal\Tests\taxonomy\Functional\Views\TaxonomyTestBase
- class \Drupal\Tests\taxonomy\Functional\Views\TaxonomyTestBase uses \Drupal\Tests\field\Traits\EntityReferenceTestTrait implements \Drupal\Tests\views\Functional\ViewTestBase
- class \Drupal\Tests\views\Functional\ViewTestBase uses \Drupal\views\Tests\ViewResultAssertionTrait implements \Drupal\Tests\BrowserTestBase
Expanded class hierarchy of RelationshipNodeTermDataTest
File
-
core/
modules/ taxonomy/ tests/ src/ Functional/ Views/ RelationshipNodeTermDataTest.php, line 13
Namespace
Drupal\Tests\taxonomy\Functional\ViewsView source
class RelationshipNodeTermDataTest extends TaxonomyTestBase {
/**
* Views used by this test.
*
* @var array
*/
public static $testViews = [
'test_taxonomy_node_term_data',
];
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
public function testViewsHandlerRelationshipNodeTermData() {
$view = Views::getView('test_taxonomy_node_term_data');
// Tests \Drupal\taxonomy\Plugin\views\relationship\NodeTermData::calculateDependencies().
$expected = [
'config' => [
'core.entity_view_mode.node.teaser',
],
'module' => [
'node',
'taxonomy',
'user',
],
];
$this->assertSame($expected, $view->getDependencies());
$this->executeView($view, [
$this->term1
->id(),
$this->term2
->id(),
]);
$expected_result = [
[
'nid' => $this->nodes[1]
->id(),
],
[
'nid' => $this->nodes[0]
->id(),
],
];
$column_map = [
'nid' => 'nid',
];
$this->assertIdenticalResultset($view, $expected_result, $column_map);
// Change the view to test relation limited by vocabulary.
$this->config('views.view.test_taxonomy_node_term_data')
->set('display.default.display_options.relationships.term_node_tid.vids', [
'views_testing_tags',
])
->save();
$view = Views::getView('test_taxonomy_node_term_data');
// Tests \Drupal\taxonomy\Plugin\views\relationship\NodeTermData::calculateDependencies().
$expected['config'][] = 'taxonomy.vocabulary.views_testing_tags';
$this->assertSame($expected, $view->getDependencies());
$this->executeView($view, [
$this->term1
->id(),
$this->term2
->id(),
]);
$this->assertIdenticalResultset($view, $expected_result, $column_map);
}
/**
* Tests that the 'taxonomy_term_access' tag is added to the Views query.
*/
public function testTag() {
// Change the view to test relation limited by vocabulary.
$this->config('views.view.test_taxonomy_node_term_data')
->set('display.default.display_options.relationships.term_node_tid.vids', [
'views_testing_tags',
])
->save();
$view = Views::getView('test_taxonomy_node_term_data');
$this->executeView($view, [
$this->term1
->id(),
]);
// By default, view has taxonomy_term_access tag.
$this->assertQueriesTermAccessTag($view, TRUE);
// The term_access tag is not set if disable_sql_rewrite is set.
$view = Views::getView('test_taxonomy_node_term_data');
$display = $view->getDisplay();
$display_options = $display->getOption('query');
$display_options['options']['disable_sql_rewrite'] = TRUE;
$display->setOption('query', $display_options);
$view->save();
$this->executeView($view, [
$this->term1
->id(),
]);
$this->assertQueriesTermAccessTag($view, FALSE);
}
/**
* Assert views queries have taxonomy_term_access tag.
*
* @param \Drupal\views\ViewExecutable $view
* The View to check for the term access tag.
* @param bool $hasTag
* The expected existence of taxonomy_term_access tag.
*
* @internal
*/
protected function assertQueriesTermAccessTag(ViewExecutable $view, bool $hasTag) : void {
$main_query = $view->build_info['query'];
$count_query = $view->build_info['count_query'];
foreach ([
$main_query,
$count_query,
] as $query) {
$tables = $query->getTables();
foreach ($tables as $join_table) {
if (is_object($join_table['table'])) {
$this->assertSame($join_table['table']->hasTag('taxonomy_term_access'), $hasTag);
}
}
}
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.