public function TaxonomyTermViewTest::testTaxonomyTermView in Zircon Profile 8.0
Same name and namespace in other branches
- 8 core/modules/taxonomy/src/Tests/Views/TaxonomyTermViewTest.php \Drupal\taxonomy\Tests\Views\TaxonomyTermViewTest::testTaxonomyTermView()
Tests that the taxonomy term view is working properly.
File
- core/
modules/ taxonomy/ src/ Tests/ Views/ TaxonomyTermViewTest.php, line 82 - Contains \Drupal\taxonomy\Tests\Views\TaxonomyTermViewTest.
Class
- TaxonomyTermViewTest
- Tests the taxonomy term view page and its translation.
Namespace
Drupal\taxonomy\Tests\ViewsCode
public function testTaxonomyTermView() {
// Create terms in the vocabulary.
$term = $this
->createTerm();
// Post an article.
$edit = array();
$edit['title[0][value]'] = $original_title = $this
->randomMachineName();
$edit['body[0][value]'] = $this
->randomMachineName();
$edit["{$this->fieldName1}[]"] = $term
->id();
$this
->drupalPostForm('node/add/article', $edit, t('Save'));
$node = $this
->drupalGetNodeByTitle($edit['title[0][value]']);
$this
->drupalGet('taxonomy/term/' . $term
->id());
$this
->assertText($term
->label());
$this
->assertText($node
->label());
\Drupal::service('module_installer')
->install(array(
'language',
'content_translation',
));
$language = ConfigurableLanguage::createFromLangcode('ur');
$language
->save();
// Enable translation for the article content type and ensure the change is
// picked up.
\Drupal::service('content_translation.manager')
->setEnabled('node', 'article', TRUE);
$roles = $this->adminUser
->getRoles(TRUE);
Role::load(reset($roles))
->grantPermission('create content translations')
->grantPermission('translate any entity')
->save();
drupal_static_reset();
\Drupal::entityManager()
->clearCachedDefinitions();
\Drupal::service('router.builder')
->rebuild();
\Drupal::service('entity.definition_update_manager')
->applyUpdates();
$edit['title[0][value]'] = $translated_title = $this
->randomMachineName();
$this
->drupalPostForm('node/' . $node
->id() . '/translations/add/en/ur', $edit, t('Save (this translation)'));
$this
->drupalGet('taxonomy/term/' . $term
->id());
$this
->assertText($term
->label());
$this
->assertText($original_title);
$this
->assertNoText($translated_title);
$this
->drupalGet('ur/taxonomy/term/' . $term
->id());
$this
->assertText($term
->label());
$this
->assertNoText($original_title);
$this
->assertText($translated_title);
// Uninstall language module and ensure that the language is not part of the
// query anymore.
// @see \Drupal\views\Plugin\views\filter\LanguageFilter::query()
$node
->delete();
\Drupal::service('module_installer')
->uninstall([
'content_translation',
'language',
]);
$view = Views::getView('taxonomy_term');
$view
->initDisplay();
$view
->setArguments([
$term
->id(),
]);
$view
->build();
/** @var \Drupal\Core\Database\Query\Select $query */
$query = $view->build_info['query'];
$tables = $query
->getTables();
// Ensure that the join to node_field_data is not added by default.
$this
->assertEqual([
'node_field_data',
'taxonomy_index',
], array_keys($tables));
// Ensure that the filter to the language column is not there by default.
$condition = $query
->conditions();
// We only want to check the no. of conditions in the query.
unset($condition['#conjunction']);
$this
->assertEqual(1, count($condition));
// Clear permissions for anonymous users to check access for default views.
Role::load(RoleInterface::ANONYMOUS_ID)
->revokePermission('access content')
->save();
// Test the default views disclose no data by default.
$this
->drupalLogout();
$this
->drupalGet('taxonomy/term/' . $term
->id());
$this
->assertResponse(403);
$this
->drupalGet('taxonomy/term/' . $term
->id() . '/feed');
$this
->assertResponse(403);
}