function LanguageSwitchingTest::doTestLanguageLinkActiveClassAuthenticated

Same name and namespace in other branches
  1. 11.x core/modules/language/tests/src/Functional/LanguageSwitchingTest.php \Drupal\Tests\language\Functional\LanguageSwitchingTest::doTestLanguageLinkActiveClassAuthenticated()
  2. 9 core/modules/language/tests/src/Functional/LanguageSwitchingTest.php \Drupal\Tests\language\Functional\LanguageSwitchingTest::doTestLanguageLinkActiveClassAuthenticated()
  3. 10 core/modules/language/tests/src/Functional/LanguageSwitchingTest.php \Drupal\Tests\language\Functional\LanguageSwitchingTest::doTestLanguageLinkActiveClassAuthenticated()

For authenticated users, the "active" class is set by JavaScript.

See also

self::testLanguageLinkActiveClass()

1 call to LanguageSwitchingTest::doTestLanguageLinkActiveClassAuthenticated()
LanguageSwitchingTest::testLanguageLinkActiveClass in core/modules/language/tests/src/Functional/LanguageSwitchingTest.php
Test active class on links when switching languages.

File

core/modules/language/tests/src/Functional/LanguageSwitchingTest.php, line 308

Class

LanguageSwitchingTest
Functional tests for the language switching feature.

Namespace

Drupal\Tests\language\Functional

Code

protected function doTestLanguageLinkActiveClassAuthenticated() {
  $function_name = '#type link';
  $path = 'language_test/type-link-active-class';
  // Test links generated by the link generator on an English page.
  $current_language = 'English';
  $this->drupalGet($path);
  // Language code 'none' link should be active.
  $langcode = 'none';
  $links = $this->xpath('//a[@id = :id and @data-drupal-link-system-path = :path]', [
    ':id' => 'no_lang_link',
    ':path' => $path,
  ]);
  $this->assertTrue(isset($links[0]), t('A link generated by :function to the current :language page with langcode :langcode has the correct attributes that will allow the drupal.active-link library to mark it as active.', [
    ':function' => $function_name,
    ':language' => $current_language,
    ':langcode' => $langcode,
  ]));
  // Language code 'en' link should be active.
  $langcode = 'en';
  $links = $this->xpath('//a[@id = :id and @hreflang = :lang and @data-drupal-link-system-path = :path]', [
    ':id' => 'en_link',
    ':lang' => 'en',
    ':path' => $path,
  ]);
  $this->assertTrue(isset($links[0]), t('A link generated by :function to the current :language page with langcode :langcode has the correct attributes that will allow the drupal.active-link library to mark it as active.', [
    ':function' => $function_name,
    ':language' => $current_language,
    ':langcode' => $langcode,
  ]));
  // Language code 'fr' link should not be active.
  $langcode = 'fr';
  $links = $this->xpath('//a[@id = :id and @hreflang = :lang and @data-drupal-link-system-path = :path]', [
    ':id' => 'fr_link',
    ':lang' => 'fr',
    ':path' => $path,
  ]);
  $this->assertTrue(isset($links[0]), t('A link generated by :function to the current :language page with langcode :langcode has the correct attributes that will allow the drupal.active-link library to NOT mark it as active.', [
    ':function' => $function_name,
    ':language' => $current_language,
    ':langcode' => $langcode,
  ]));
  // Verify that drupalSettings contains the correct values.
  $settings = $this->getDrupalSettings();
  $this->assertIdentical($settings['path']['currentPath'], $path, 'drupalSettings.path.currentPath is set correctly to allow drupal.active-link to mark the correct links as active.');
  $this->assertIdentical($settings['path']['isFront'], FALSE, 'drupalSettings.path.isFront is set correctly to allow drupal.active-link to mark the correct links as active.');
  $this->assertIdentical($settings['path']['currentLanguage'], 'en', 'drupalSettings.path.currentLanguage is set correctly to allow drupal.active-link to mark the correct links as active.');
  // Test links generated by the link generator on a French page.
  $current_language = 'French';
  $this->drupalGet('fr/language_test/type-link-active-class');
  // Language code 'none' link should be active.
  $langcode = 'none';
  $links = $this->xpath('//a[@id = :id and @data-drupal-link-system-path = :path]', [
    ':id' => 'no_lang_link',
    ':path' => $path,
  ]);
  $this->assertTrue(isset($links[0]), t('A link generated by :function to the current :language page with langcode :langcode has the correct attributes that will allow the drupal.active-link library to mark it as active.', [
    ':function' => $function_name,
    ':language' => $current_language,
    ':langcode' => $langcode,
  ]));
  // Language code 'en' link should not be active.
  $langcode = 'en';
  $links = $this->xpath('//a[@id = :id and @hreflang = :lang and @data-drupal-link-system-path = :path]', [
    ':id' => 'en_link',
    ':lang' => 'en',
    ':path' => $path,
  ]);
  $this->assertTrue(isset($links[0]), t('A link generated by :function to the current :language page with langcode :langcode has the correct attributes that will allow the drupal.active-link library to NOT mark it as active.', [
    ':function' => $function_name,
    ':language' => $current_language,
    ':langcode' => $langcode,
  ]));
  // Language code 'fr' link should be active.
  $langcode = 'fr';
  $links = $this->xpath('//a[@id = :id and @hreflang = :lang and @data-drupal-link-system-path = :path]', [
    ':id' => 'fr_link',
    ':lang' => 'fr',
    ':path' => $path,
  ]);
  $this->assertTrue(isset($links[0]), t('A link generated by :function to the current :language page with langcode :langcode has the correct attributes that will allow the drupal.active-link library to mark it as active.', [
    ':function' => $function_name,
    ':language' => $current_language,
    ':langcode' => $langcode,
  ]));
  // Verify that drupalSettings contains the correct values.
  $settings = $this->getDrupalSettings();
  $this->assertIdentical($settings['path']['currentPath'], $path, 'drupalSettings.path.currentPath is set correctly to allow drupal.active-link to mark the correct links as active.');
  $this->assertIdentical($settings['path']['isFront'], FALSE, 'drupalSettings.path.isFront is set correctly to allow drupal.active-link to mark the correct links as active.');
  $this->assertIdentical($settings['path']['currentLanguage'], 'fr', 'drupalSettings.path.currentLanguage is set correctly to allow drupal.active-link to mark the correct links as active.');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.