function LanguageSwitchingTest::testLanguageSessionSwitchLinks
Same name in other branches
- 9 core/modules/language/tests/src/Functional/LanguageSwitchingTest.php \Drupal\Tests\language\Functional\LanguageSwitchingTest::testLanguageSessionSwitchLinks()
- 8.9.x core/modules/language/tests/src/Functional/LanguageSwitchingTest.php \Drupal\Tests\language\Functional\LanguageSwitchingTest::testLanguageSessionSwitchLinks()
- 11.x core/modules/language/tests/src/Functional/LanguageSwitchingTest.php \Drupal\Tests\language\Functional\LanguageSwitchingTest::testLanguageSessionSwitchLinks()
Tests language switcher links for session based negotiation.
File
-
core/
modules/ language/ tests/ src/ Functional/ LanguageSwitchingTest.php, line 518
Class
- LanguageSwitchingTest
- Functional tests for the language switching feature.
Namespace
Drupal\Tests\language\FunctionalCode
public function testLanguageSessionSwitchLinks() : void {
// Add language.
$edit = [
'predefined_langcode' => 'fr',
];
$this->drupalGet('admin/config/regional/language/add');
$this->submitForm($edit, 'Add language');
// Enable session language detection and selection.
$edit = [
'language_interface[enabled][language-url]' => FALSE,
'language_interface[enabled][language-session]' => TRUE,
];
$this->drupalGet('admin/config/regional/language/detection');
$this->submitForm($edit, 'Save settings');
// Enable the language switching block.
$this->drupalPlaceBlock('language_block:' . LanguageInterface::TYPE_INTERFACE, [
'id' => 'test_language_block',
]);
// Enable the main menu block.
$this->drupalPlaceBlock('system_menu_block:main', [
'id' => 'test_menu',
]);
// Add a link to the homepage.
$link = MenuLinkContent::create([
'title' => 'Home',
'menu_name' => 'main',
'bundle' => 'menu_link_content',
'link' => [
[
'uri' => 'entity:user/2',
],
],
]);
$link->save();
// Go to the homepage.
$this->drupalGet('');
// Click on the French link.
$this->clickLink('French');
// There should be a query parameter to set the session language.
$this->assertSession()
->addressEquals('user/2?language=fr');
// Click on the 'Home' Link.
$this->clickLink('Home');
// There should be no query parameter.
$this->assertSession()
->addressEquals('user/2');
// Click on the French link.
$this->clickLink('French');
// There should be no query parameter.
$this->assertSession()
->addressEquals('user/2');
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.