123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331 |
- <?php
- /**
- * @file
- * Tests for Metatag's i18n integration for the configurations.
- */
- /**
- * Tests for Metatag's i18n integration for the configurations.
- */
- class MetatagCoreWithI18nConfigTest extends MetatagTestHelper {
- /**
- * {@inheritdoc}
- */
- public static function getInfo() {
- return array(
- 'name' => 'Metatag core tests with i18n: configs',
- 'description' => 'Test Metatag configuration integration with the i18n module.',
- 'group' => 'Metatag',
- 'dependencies' => array('ctools', 'token', 'i18n'),
- );
- }
- /**
- * {@inheritdoc}
- */
- 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',
- // Needed for content type management.
- 'bypass node access',
- 'administer content types',
- 'administer nodes',
- );
- $this->adminUser = $this->createAdminUser($perms);
- // Log in the admin user.
- $this->drupalLogin($this->adminUser);
- // Reload the translations.
- drupal_flush_all_caches();
- module_load_include('admin.inc', 'i18n_string');
- i18n_string_refresh_group('metatag');
- }
- /**
- * Test translation functionality with i18n on config defaults.
- */
- public function testI18nDefaultConfig() {
- // Plan out the different translation string tests.
- $string_en = 'Drupal 7 (https://www.drupal.org)';
- $string_fr = 'French Drupal';
- $config_name = 'metatag_config:global:generator';
- // Confirm the translation page exists and has some Metatag strings.
- $this->searchTranslationPage('', $config_name);
- // Load the front page.
- $this->drupalGet('');
- $this->assertResponse(200, 'Loaded the homepage.');
- // Confirm the page's title is what we set it to.
- $xpath = $this->xpath("//meta[@name='generator']");
- $this->assertEqual(count($xpath), 1, 'Exactly one generator meta tag found.');
- $this->assertEqual($xpath[0]['content'], $string_en);
- // Confirm the string is present.
- $this->searchTranslationPage($string_en, $config_name);
- // Get the translation string lid for the generator tag.
- $lid = $this->getTranslationLidByContext($config_name);
- $this->assertNotEqual($lid, 0, 'Found the locales_source string for the generator tag.');
- // Save the translation string.
- $this->saveTranslationString($lid, $config_name, 'fr', $string_en, $string_fr);
- // Load the English front page again.
- $this->drupalGet('');
- $this->assertResponse(200, 'Loaded the default homepage.');
- // Confirm the page's generator tag is what we set it to.
- $xpath = $this->xpath("//meta[@name='generator']");
- $this->assertEqual(count($xpath), 1, 'Exactly one generator meta tag found.');
- $this->assertEqual($xpath[0]['content'], $string_en);
- // Load the French front page.
- $this->drupalGet('fr');
- $this->assertResponse(200, 'Loaded the French homepage.');
- // Confirm the generator string was translated.
- $xpath = $this->xpath("//meta[@name='generator']");
- $this->assertEqual(count($xpath), 1, 'Exactly one generator meta tag found.');
- $this->assertEqual($xpath[0]['content'], $string_fr);
- }
- /**
- * Test translations of the custom configurations.
- */
- public function testI18nCustomConfig() {
- // Plan out the different translation string tests.
- $string_en = 'Welcome to the homepage!';
- $string_fr = 'Bonjour pour le homepage!';
- $config_name = 'metatag_config:global:frontpage:title';
- // Confirm the translation page exists and has some Metatag strings.
- $this->searchTranslationPage('', $config_name);
- // Confirm the string is not present yet.
- $this->searchTranslationPage($string_en, $config_name, 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);
- // Confirm the string is present now.
- $this->searchTranslationPage($string_en, $config_name);
- // 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);
- // Get the translation string lid for the front page's title.
- $lid = $this->getTranslationLidByContext($config_name);
- $this->assertNotEqual($lid, 0, 'Found the locales_source string for the front page title tag.');
- // Save the translation string.
- $this->saveTranslationString($lid, $config_name, '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);
- }
- /**
- * Confirm that translations will be deleted when configs are deleted.
- */
- public function testI18nDeleteConfig() {
- // Plan out the different translation string tests.
- $string_en = 'Hey, an article!';
- $string_fr = 'Alors! Un article!';
- $config_name = 'metatag_config:node:article:title';
- // Create a config for the 'article' content type's meta tags.
- $instance = 'node:article';
- $label = t('Node: Article');
- $config = new StdClass();
- $config->instance = $instance;
- $config->api_version = 1;
- $config->disabled = FALSE;
- $config->export_module = 'metatag';
- $config->config = array();
- // Set something specific as the page title.
- $config->config['title']['value'] = $string_en;
- metatag_config_save($config);
- // Confirm the string is present now.
- $this->searchTranslationPage($string_en, $config_name);
- // Load the 'delete' page.
- $this->drupalGet('admin/config/search/metatags/config/' . $instance . '/delete');
- $this->assertResponse(200);
- // Confirm this is the correct page.
- $this->assertText(t('Are you sure you want to delete the meta tag defaults for @label?', array('@label' => $label)));
- $this->assertText(t('This action cannot be undone.'));
- $this->assertFieldByName('op');
- $this->assertFieldByName('op', t('Confirm'));
- // Submit the form.
- $this->drupalPost(NULL, array(), t('Confirm'));
- $this->assertResponse(200);
- $this->assertText(t('The meta tag defaults for @label have been deleted.', array('@label' => $label)));
- // Confirm the string has been removed.
- $this->searchTranslationPage($string_en, $config_name, FALSE);
- }
- /**
- * Confirm that translations will be deleted when entity bundles are deleted.
- */
- public function testI18nDeleteEntityBundle() {
- // Plan out the different translation string tests.
- $string_en = 'Hey, an article!';
- $string_fr = 'Alors! Un article!';
- $config_name = 'metatag_config:node:article:title';
- // Create a config for the 'article' content type's meta tags.
- $content_type = 'article';
- $content_type_label = t('Article');
- $instance = 'node:article';
- $instance_label = t('Node: Article');
- $config = new StdClass();
- $config->instance = $instance;
- $config->api_version = 1;
- $config->disabled = FALSE;
- $config->export_module = 'metatag';
- $config->config = array();
- // Set something specific as the page title.
- $config->config['title']['value'] = $string_en;
- metatag_config_save($config);
- // Confirm the string is present now.
- $this->searchTranslationPage($string_en, $config_name);
- // Load the 'delete' page.
- $this->drupalGet('admin/structure/types/manage/' . $content_type);
- $this->assertResponse(200);
- // Confirm this is the correct page.
- $this->assertFieldByName('op', t('Delete content type'));
- // Submit the form.
- $this->drupalPost(NULL, array(), t('Delete content type'));
- $this->assertResponse(200);
- // Confirm this is the correct page.
- $this->assertText(t('Are you sure you want to delete the content type @label?', array('@label' => $content_type_label)));
- $this->assertText(t('This action cannot be undone.'));
- $this->assertFieldByName('op');
- $this->assertFieldByName('op', t('Delete'));
- // Submit the form.
- $this->drupalPost(NULL, array(), t('Delete'));
- $this->assertResponse(200);
- $this->assertText(t('The content type @label has been deleted.', array('@label' => $content_type_label)));
- // Confirm the config was deleted.
- $config = metatag_config_load($instance);
- $this->assertEqual($config, array());
- // Confirm the string has been removed.
- $this->searchTranslationPage($string_en, $config_name, FALSE);
- }
- /**
- * Test translations of the custom configurations.
- */
- public function testI18nDifferentSourceLanguage() {
- // Make French the default source locale.
- variable_set('i18n_string_source_language', 'fr');
- // Verify that the default language and source language are different.
- $this->assertNotEqual(i18n_string_source_language(), language_default('language'));
- // Plan out the different translation string tests.
- $string_en = 'Welcome to the homepage!';
- $string_fr = 'Bonjour pour le homepage!';
- $config_name = 'metatag_config:global:frontpage:title';
- // Confirm the translation page exists and has some Metatag strings.
- $this->searchTranslationPage('', $config_name);
- // Confirm the string is not present yet.
- $this->searchTranslationPage($string_en, $config_name, 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_fr;
- metatag_config_save($config);
- // Confirm the string is present now.
- $this->searchTranslationPage($string_fr, $config_name);
- // Load the front page.
- $this->drupalGet('fr');
- $this->assertResponse(200, 'Loaded the homepage.');
- // Confirm the page's title is what we set it to.
- $this->assertTitle($string_fr);
- // Get the translation string lid for the front page's title.
- $lid = $this->getTranslationLidByContext($config_name);
- $this->assertNotEqual($lid, 0, 'Found the locales_source string for the front page title tag.');
- // Save the translation string.
- $this->saveTranslationString($lid, $config_name, 'en', $string_fr, $string_en);
- // 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);
- }
- }
|