MetatagCoreWithI18nOutputTest.test in Metatag 7
Tests for Metatag for when i18n is enabled and actively being used.
File
tests/MetatagCoreWithI18nOutputTest.testView source
<?php
/**
* @file
* Tests for Metatag for when i18n is enabled and actively being used.
*/
/**
* Tests for Metatag for when i18n is enabled and actively being used.
*/
class MetatagCoreWithI18nOutputTest extends MetatagTestBase {
/**
* {@inheritdoc}
*/
public static function getInfo() {
return array(
'name' => 'Metatag core tests with i18n: output',
'description' => 'Test Metatag integration with the i18n module.',
'group' => 'Metatag',
'dependencies' => array(
'ctools',
'devel',
'token',
'i18n',
),
);
}
/**
* {@inheritdoc}
*/
public function setUp(array $modules = array()) {
// Need the i18n and i18n_strings modules.
$modules[] = 'i18n';
$modules[] = 'i18n_string';
// Enable all of the modules that are needed.
parent::setUp($modules);
// Add more locales.
$this
->setupLocales();
// Set up the locales.
$perms = array(
'administer languages',
'translate interface',
// From i18n.
'translate admin strings',
'translate user-defined strings',
);
$this->adminUser = $this
->createAdminUser($perms);
// Log in the admin user.
$this
->drupalLogin($this->adminUser);
}
/**
* Test translations of the output tags.
*/
public function testI18nOutputTranslationsEnabled() {
// Enable output translations.
$this
->toggleOutputTranslations(TRUE);
// Plan out the different translation string tests.
$string_en = 'Welcome to the homepage!';
$string_fr = 'Bonjour pour le homepage!';
$string_context = 'output:frontpage:title';
$this
->searchTranslationPage('', $string_context);
// Confirm the string is not present yet.
$this
->searchTranslationPage($string_en, $string_context, FALSE);
// Load the front page's meta tags.
$instance = 'global:frontpage';
$config = metatag_config_load($instance);
// Set something specific as the homepage.
$config->config['title']['value'] = $string_en;
metatag_config_save($config);
// Load the front page.
$this
->drupalGet('');
$this
->assertResponse(200, 'Loaded the homepage.');
// Confirm the page's title is what we set it to.
$this
->assertTitle($string_en);
// Confirm the string is translatable.
$this
->searchTranslationPage($string_en, $string_context);
// Get the translation string lid for the front page's title.
$lid = $this
->getTranslationLidByContext($string_context);
$this
->assertNotEqual($lid, 0, 'Found the locales_source string for the front page output title tag.');
// Save the translation string.
$this
->saveTranslationString($lid, $string_context, 'fr', $string_en, $string_fr);
// Load the English front page again.
$this
->drupalGet('');
$this
->assertResponse(200, 'Loaded the default homepage.');
// Confirm the page's title is what we set it to.
$this
->assertTitle($string_en);
// Load the French front page.
$this
->drupalGet('fr');
$this
->assertResponse(200, 'Loaded the French homepage.');
// Confirm the page's title is what we set it to.
$this
->assertTitle($string_fr);
// Make doubly sure there are output translations.
$lids = $this
->getTranslationsByContext($string_context);
$this
->assertNotEqual($lids, array());
}
/**
* Verify that no output translation records are generated when it's disabled.
*/
public function testI18nOutputTranslationsDisabled() {
// Make sure output translations are disabled.
$this
->toggleOutputTranslations(FALSE);
// Plan out the different translation string tests.
$string_en = 'Welcome to the homepage!';
$string_fr = 'Bonjour pour le homepage!';
$string_context = 'output:frontpage:title';
$this
->searchTranslationPage('', $string_context);
// Confirm the string is not present yet.
$this
->searchTranslationPage($string_en, $string_context, FALSE);
// Load the front page's meta tags.
$instance = 'global:frontpage';
$config = metatag_config_load($instance);
// Set something specific as the homepage.
$config->config['title']['value'] = $string_en;
metatag_config_save($config);
// Load the front page.
$this
->drupalGet('');
$this
->assertResponse(200, 'Loaded the homepage.');
// Confirm the page's title is what we set it to.
$this
->assertTitle($string_en);
// Confirm the string is still not translatable.
$this
->searchTranslationPage($string_en, $string_context, FALSE);
// Make doubly sure there are no output translations.
$lids = $this
->getTranslationsByContext($string_context);
$this
->assertEqual($lids, array());
}
/**
* Test the menu paths.
*/
public function testMenuPaths() {
$paths = metatag_test_menu();
$test_string = 'read-more-books-every-day';
foreach ($paths as $path => $menu_item) {
if (substr($path, -1) == '%') {
$path = substr($path, 0, -1) . $test_string;
}
$this
->drupalGet($path);
$this
->assertResponse(200, 'Loaded a page: ' . $path);
}
}
/**
* Enable or disable output translations.
*
* @param bool $enable
* Whether or not to enable translations; defaults to TRUE.
*/
private function toggleOutputTranslations($enable = TRUE) {
// Enable output translation.
variable_set('metatag_i18n_translate_output', $enable);
// Reload the translations.
drupal_flush_all_caches();
module_load_include('admin.inc', 'i18n_string');
i18n_string_refresh_group('metatag');
}
}
Classes
Name | Description |
---|---|
MetatagCoreWithI18nOutputTest | Tests for Metatag for when i18n is enabled and actively being used. |