Test active class on links when switching languages.
function testLanguageLinkActiveClass() {
// Add language.
$edit = array(
'predefined_langcode' => 'fr',
);
$this
->drupalPost('admin/config/regional/language/add', $edit, t('Add language'));
// Enable URL language detection and selection.
$edit = array(
'language_interface[enabled][language-url]' => '1',
);
$this
->drupalPost('admin/config/regional/language/detection', $edit, t('Save settings'));
$function_name = 'l()';
// Test links generated by l() on an English page.
$current_language = 'English';
$this
->drupalGet('language_test/l-active-class');
// Language code 'none' link should be active.
$langcode = 'none';
$links = $this
->xpath('//a[@id = :id and contains(@class, :class)]', array(
':id' => 'no_lang_link',
':class' => 'active',
));
$this
->assertTrue(isset($links[0]), t('A link generated by :function to the current :language page with langcode :langcode is marked active.', array(
':function' => $function_name,
':language' => $current_language,
':langcode' => $langcode,
)));
// Language code 'en' link should be active.
$langcode = 'en';
$links = $this
->xpath('//a[@id = :id and contains(@class, :class)]', array(
':id' => 'en_link',
':class' => 'active',
));
$this
->assertTrue(isset($links[0]), t('A link generated by :function to the current :language page with langcode :langcode is marked active.', array(
':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 not(contains(@class, :class))]', array(
':id' => 'fr_link',
':class' => 'active',
));
$this
->assertTrue(isset($links[0]), t('A link generated by :function to the current :language page with langcode :langcode is NOT marked active.', array(
':function' => $function_name,
':language' => $current_language,
':langcode' => $langcode,
)));
// Test links generated by l() on a French page.
$current_language = 'French';
$this
->drupalGet('fr/language_test/l-active-class');
// Language code 'none' link should be active.
$langcode = 'none';
$links = $this
->xpath('//a[@id = :id and contains(@class, :class)]', array(
':id' => 'no_lang_link',
':class' => 'active',
));
$this
->assertTrue(isset($links[0]), t('A link generated by :function to the current :language page with langcode :langcode is marked active.', array(
':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 not(contains(@class, :class))]', array(
':id' => 'en_link',
':class' => 'active',
));
$this
->assertTrue(isset($links[0]), t('A link generated by :function to the current :language page with langcode :langcode is NOT marked active.', array(
':function' => $function_name,
':language' => $current_language,
':langcode' => $langcode,
)));
// Language code 'fr' link should be active.
$langcode = 'fr';
$links = $this
->xpath('//a[@id = :id and contains(@class, :class)]', array(
':id' => 'fr_link',
':class' => 'active',
));
$this
->assertTrue(isset($links[0]), t('A link generated by :function to the current :language page with langcode :langcode is marked active.', array(
':function' => $function_name,
':language' => $current_language,
':langcode' => $langcode,
)));
$function_name = "theme('link')";
// Test links generated by theme('link') on an English page.
$current_language = 'English';
$this
->drupalGet('language_test/theme-link-active-class');
// Language code 'none' link should be active.
$langcode = 'none';
$links = $this
->xpath('//a[@id = :id and contains(@class, :class)]', array(
':id' => 'no_lang_link',
':class' => 'active',
));
$this
->assertTrue(isset($links[0]), t('A link generated by :function to the current :language page with langcode :langcode is marked active.', array(
':function' => $function_name,
':language' => $current_language,
':langcode' => $langcode,
)));
// Language code 'en' link should be active.
$langcode = 'en';
$links = $this
->xpath('//a[@id = :id and contains(@class, :class)]', array(
':id' => 'en_link',
':class' => 'active',
));
$this
->assertTrue(isset($links[0]), t('A link generated by :function to the current :language page with langcode :langcode is marked active.', array(
':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 not(contains(@class, :class))]', array(
':id' => 'fr_link',
':class' => 'active',
));
$this
->assertTrue(isset($links[0]), t('A link generated by :function to the current :language page with langcode :langcode is NOT marked active.', array(
':function' => $function_name,
':language' => $current_language,
':langcode' => $langcode,
)));
// Test links generated by theme('link') on a French page.
$current_language = 'French';
$this
->drupalGet('fr/language_test/theme-link-active-class');
// Language code 'none' link should be active.
$langcode = 'none';
$links = $this
->xpath('//a[@id = :id and contains(@class, :class)]', array(
':id' => 'no_lang_link',
':class' => 'active',
));
$this
->assertTrue(isset($links[0]), t('A link generated by :function to the current :language page with langcode :langcode is marked active.', array(
':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 not(contains(@class, :class))]', array(
':id' => 'en_link',
':class' => 'active',
));
$this
->assertTrue(isset($links[0]), t('A link generated by :function to the current :language page with langcode :langcode is NOT marked active.', array(
':function' => $function_name,
':language' => $current_language,
':langcode' => $langcode,
)));
// Language code 'fr' link should be active.
$langcode = 'fr';
$links = $this
->xpath('//a[@id = :id and contains(@class, :class)]', array(
':id' => 'fr_link',
':class' => 'active',
));
$this
->assertTrue(isset($links[0]), t('A link generated by :function to the current :language page with langcode :langcode is marked active.', array(
':function' => $function_name,
':language' => $current_language,
':langcode' => $langcode,
)));
}