View source
<?php
namespace Drupal\Tests\taxonomy\Functional;
use Drupal\Core\Language\LanguageInterface;
use Drupal\language\Entity\ConfigurableLanguage;
class TermLanguageTest extends TaxonomyTestBase {
protected static $modules = [
'language',
];
protected $defaultTheme = 'stark';
protected $vocabulary;
protected function setUp() : void {
parent::setUp();
$this
->drupalLogin($this
->drupalCreateUser([
'administer taxonomy',
]));
$this->vocabulary = $this
->createVocabulary();
foreach ([
'aa',
'bb',
'cc',
] as $language_code) {
ConfigurableLanguage::create([
'id' => $language_code,
'label' => $this
->randomMachineName(),
])
->save();
}
}
public function testTermLanguage() {
$edit = [
'default_language[language_alterable]' => TRUE,
];
$this
->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary
->id());
$this
->submitForm($edit, 'Save');
$this
->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary
->id() . '/add');
$this
->assertSession()
->fieldExists('edit-langcode-0-value');
$edit = [
'name[0][value]' => $this
->randomMachineName(),
'langcode[0][value]' => 'aa',
];
$this
->submitForm($edit, 'Save');
$terms = \Drupal::entityTypeManager()
->getStorage('taxonomy_term')
->loadByProperties([
'name' => $edit['name[0][value]'],
]);
$term = reset($terms);
$this
->assertEquals($edit['langcode[0][value]'], $term
->language()
->getId(), 'The term contains the correct langcode.');
$this
->drupalGet('taxonomy/term/' . $term
->id() . '/edit');
$this
->assertTrue($this
->assertSession()
->optionExists('edit-langcode-0-value', $edit['langcode[0][value]'])
->isSelected());
$edit['langcode[0][value]'] = 'bb';
$this
->drupalGet('taxonomy/term/' . $term
->id() . '/edit');
$this
->submitForm($edit, 'Save');
$this
->drupalGet('taxonomy/term/' . $term
->id() . '/edit');
$this
->assertTrue($this
->assertSession()
->optionExists('edit-langcode-0-value', $edit['langcode[0][value]'])
->isSelected());
}
public function testDefaultTermLanguage() {
$edit = [
'default_language[langcode]' => 'bb',
'default_language[language_alterable]' => TRUE,
];
$this
->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary
->id());
$this
->submitForm($edit, 'Save');
$this
->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary
->id() . '/add');
$this
->assertTrue($this
->assertSession()
->optionExists('edit-langcode-0-value', 'bb')
->isSelected());
$edit = [
'default_language[langcode]' => 'current_interface',
'default_language[language_alterable]' => TRUE,
];
$this
->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary
->id());
$this
->submitForm($edit, 'Save');
$this
->drupalGet('aa/admin/structure/taxonomy/manage/' . $this->vocabulary
->id() . '/add');
$this
->assertTrue($this
->assertSession()
->optionExists('edit-langcode-0-value', 'aa')
->isSelected());
$this
->drupalGet('bb/admin/structure/taxonomy/manage/' . $this->vocabulary
->id() . '/add');
$this
->assertTrue($this
->assertSession()
->optionExists('edit-langcode-0-value', 'bb')
->isSelected());
$this
->config('system.site')
->set('default_langcode', 'cc')
->save();
$edit = [
'default_language[langcode]' => LanguageInterface::LANGCODE_SITE_DEFAULT,
'default_language[language_alterable]' => TRUE,
];
$this
->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary
->id());
$this
->submitForm($edit, 'Save');
$this
->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary
->id() . '/add');
$this
->assertTrue($this
->assertSession()
->optionExists('edit-langcode-0-value', 'cc')
->isSelected());
}
public function testTermTranslatedOnOverviewPage() {
$edit = [
'default_language[language_alterable]' => TRUE,
];
$this
->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary
->id());
$this
->submitForm($edit, 'Save');
$this
->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary
->id() . '/add');
$edit = [
'name[0][value]' => $this
->randomMachineName(),
'langcode[0][value]' => 'aa',
];
$this
->submitForm($edit, 'Save');
$terms = \Drupal::entityTypeManager()
->getStorage('taxonomy_term')
->loadByProperties([
'name' => $edit['name[0][value]'],
]);
$term = reset($terms);
$translated_title = $this
->randomMachineName();
$term
->addTranslation('bb', [
'name' => $translated_title,
]);
$term
->save();
$this
->drupalGet('bb/admin/structure/taxonomy/manage/' . $this->vocabulary
->id() . '/overview');
$this
->assertSession()
->responseMatches('|<a[^>]*>' . $translated_title . '</a>|');
}
}