Namespace
Drupal\Tests\config_translation\Functional
File
core/modules/config_translation/tests/src/Functional/ConfigTranslationUiSiteInformationTest.php
View source
<?php
declare (strict_types=1);
namespace Drupal\Tests\config_translation\Functional;
class ConfigTranslationUiSiteInformationTest extends ConfigTranslationUiTestBase {
public function testSiteInformationTranslationUi() {
$this
->drupalLogin($this->adminUser);
$site_name = 'Name of the site for testing configuration translation';
$site_slogan = 'Site slogan for testing configuration translation';
$site_name_label = 'Site name';
$fr_site_name = 'Nom du site pour tester la configuration traduction';
$fr_site_slogan = 'Slogan du site pour tester la traduction de configuration';
$fr_site_name_label = 'Libellé du champ "Nom du site"';
$translation_base_url = 'admin/config/system/site-information/translate';
$this
->setSiteInformation($site_name, $site_slogan);
$this
->drupalGet('admin/config/system/site-information');
$this
->assertSession()
->linkByHrefExists($translation_base_url);
$this
->drupalGet($translation_base_url);
$this
->clickLink('Edit');
$this
->submitForm([], 'Save configuration');
$this
->assertSession()
->addressEquals($translation_base_url);
$this
->assertSession()
->linkByHrefExists("{$translation_base_url}/fr/add");
$this
->clickLink('Add');
$this
->assertSession()
->pageTextContains($site_name);
$this
->assertSession()
->pageTextContains($site_slogan);
$edit = [
'translation[config_names][system.site][name]' => $fr_site_name,
'translation[config_names][system.site][slogan]' => $fr_site_slogan,
];
$this
->drupalGet("{$translation_base_url}/fr/add");
$this
->submitForm($edit, 'Save translation');
$this
->assertSession()
->pageTextContains('Successfully saved French translation.');
$this
->assertSession()
->linkByHrefNotExists("{$translation_base_url}/fr/add");
$this
->assertSession()
->linkByHrefExists("{$translation_base_url}/fr/edit");
$this
->assertSession()
->linkByHrefExists("{$translation_base_url}/fr/delete");
$this
->drupalGet("{$translation_base_url}/fr/edit");
$this
->assertSession()
->fieldValueEquals('translation[config_names][system.site][name]', $fr_site_name);
$this
->assertSession()
->fieldValueEquals('translation[config_names][system.site][slogan]', $fr_site_slogan);
$this
->drupalPlaceBlock('system_branding_block', [
'region' => 'header',
]);
$this
->drupalGet('fr');
$this
->assertSession()
->pageTextContains($fr_site_name);
$this
->assertSession()
->pageTextContains($fr_site_slogan);
$this
->drupalGet("fr/{$translation_base_url}/fr/edit");
$this
->assertSession()
->pageTextContains($site_name);
$this
->assertSession()
->pageTextContains($site_slogan);
$search = [
'string' => $site_name_label,
'langcode' => 'fr',
'translation' => 'untranslated',
];
$this
->drupalGet('admin/config/regional/translate');
$this
->submitForm($search, 'Filter');
$textarea = $this
->assertSession()
->elementExists('xpath', '//textarea');
$lid = $textarea
->getAttribute('name');
$edit = [
$lid => $fr_site_name_label,
];
$this
->drupalGet('admin/config/regional/translate');
$this
->submitForm($edit, 'Save translations');
$this
->drupalGet("fr/{$translation_base_url}/fr/edit");
$this
->assertSession()
->pageTextContains($fr_site_name_label);
$this
->assertSession()
->pageTextNotContains($site_name_label);
$this
->drupalGet("fr/{$translation_base_url}/ta/edit");
$this
->assertSession()
->pageTextContains($fr_site_name_label);
$this
->assertSession()
->pageTextNotContains($site_name_label);
$this
->drupalGet("{$translation_base_url}/fr/edit");
$this
->assertSession()
->pageTextContains($site_name_label);
$this
->assertSession()
->pageTextNotContains($fr_site_name_label);
}
public function testSourceValueDuplicateSave() {
$this
->drupalLogin($this->adminUser);
$site_name = 'Site name for testing configuration translation';
$site_slogan = 'Site slogan for testing configuration translation';
$translation_base_url = 'admin/config/system/site-information/translate';
$this
->setSiteInformation($site_name, $site_slogan);
$this
->drupalGet($translation_base_url);
$edit = [
'translation[config_names][system.site][name]' => 'FR ' . $site_name,
'translation[config_names][system.site][slogan]' => 'FR ' . $site_slogan,
];
$this
->drupalGet("{$translation_base_url}/fr/add");
$this
->submitForm($edit, 'Save translation');
$override = \Drupal::languageManager()
->getLanguageConfigOverride('fr', 'system.site');
$expected = [
'name' => 'FR ' . $site_name,
'slogan' => 'FR ' . $site_slogan,
];
$this
->assertEquals($expected, $override
->get());
$this
->drupalGet("{$translation_base_url}/fr/edit");
$this
->assertSession()
->pageTextNotContains('FR ' . $site_name);
$this
->assertSession()
->pageTextNotContains('FR ' . $site_slogan);
$edit = [
'translation[config_names][system.site][name]' => $site_name,
'translation[config_names][system.site][slogan]' => 'FR ' . $site_slogan,
];
$this
->submitForm($edit, 'Save translation');
$this
->assertSession()
->pageTextContains('Successfully updated French translation.');
$override = \Drupal::languageManager()
->getLanguageConfigOverride('fr', 'system.site');
$expected = 'FR ' . $site_slogan;
$this
->assertEquals($expected, $override
->get('slogan'));
$this
->drupalGet("{$translation_base_url}/fr/edit");
$this
->assertSession()
->pageTextNotContains('FR ' . $site_slogan);
$edit = [
'translation[config_names][system.site][name]' => $site_name,
'translation[config_names][system.site][slogan]' => $site_slogan,
];
$this
->submitForm($edit, 'Save translation');
$override = \Drupal::languageManager()
->getLanguageConfigOverride('fr', 'system.site');
$this
->assertTrue($override
->isNew());
$this
->drupalLogout();
$this
->drupalLogin($this->translatorUser);
$this
->drupalGet('admin/config/system/site-information');
$this
->assertSession()
->statusCodeEquals(403);
$this
->drupalGet($translation_base_url);
$this
->assertSession()
->linkNotExists('Edit');
$this
->assertSession()
->linkByHrefExists("{$translation_base_url}/fr/add");
}
}
Classes