class ConfigTranslationCacheTest in Drupal 10
Same name and namespace in other branches
- 8 core/modules/config_translation/tests/src/Functional/ConfigTranslationCacheTest.php \Drupal\Tests\config_translation\Functional\ConfigTranslationCacheTest
- 9 core/modules/config_translation/tests/src/Functional/ConfigTranslationCacheTest.php \Drupal\Tests\config_translation\Functional\ConfigTranslationCacheTest
Translate settings and entities to various languages.
@group config_translation
Hierarchy
- class \Drupal\Tests\BrowserTestBase extends \PHPUnit\Framework\TestCase uses \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait, \Drupal\Tests\PhpUnitCompatibilityTrait, FunctionalTestSetupTrait, TestSetupTrait, BlockCreationTrait, ConfigTestTrait, ExtensionListTestTrait, ContentTypeCreationTrait, NodeCreationTrait, RandomGeneratorTrait, TestRequirementsTrait, PhpUnitWarnings, UiHelperTrait, UserCreationTrait, XdebugRequestTrait
- class \Drupal\Tests\config_translation\Functional\ConfigTranslationCacheTest
Expanded class hierarchy of ConfigTranslationCacheTest
File
- core/
modules/ config_translation/ tests/ src/ Functional/ ConfigTranslationCacheTest.php, line 16
Namespace
Drupal\Tests\config_translation\FunctionalView source
class ConfigTranslationCacheTest extends BrowserTestBase {
/**
* Modules to enable.
*
* @var array
*/
protected static $modules = [
'block',
'config_translation',
'config_translation_test',
'contact',
'contact_test',
'contextual',
'entity_test',
'field_test',
'field_ui',
'filter',
'filter_test',
'node',
'views',
'views_ui',
];
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/**
* Languages to enable.
*
* @var array
*/
protected $langcodes = [
'fr',
'ta',
];
/**
* Administrator user for tests.
*
* @var \Drupal\user\UserInterface
*/
protected $adminUser;
/**
* Translator user for tests.
*
* @var \Drupal\user\UserInterface
*/
protected $translatorUser;
/**
* String translation storage object.
*
* @var \Drupal\locale\StringStorageInterface
*/
protected $localeStorage;
protected function setUp() : void {
parent::setUp();
$translator_permissions = [
'translate configuration',
];
/** @var \Drupal\filter\FilterFormatInterface $filter_test_format */
$filter_test_format = FilterFormat::load('filter_test');
/** @var \Drupal\filter\FilterFormatInterface $filtered_html_format */
$filtered_html_format = FilterFormat::load('filtered_html');
/** @var \Drupal\filter\FilterFormatInterface $full_html_format */
$full_html_format = FilterFormat::load('full_html');
$admin_permissions = array_merge($translator_permissions, [
'administer languages',
'administer site configuration',
'link to any page',
'administer contact forms',
'administer filters',
$filtered_html_format
->getPermissionName(),
$full_html_format
->getPermissionName(),
$filter_test_format
->getPermissionName(),
'access site-wide contact form',
'access contextual links',
'administer account settings',
'administer themes',
'bypass node access',
'administer content types',
'translate interface',
'administer entity_test fields',
]);
// Create and login user.
$this->translatorUser = $this
->drupalCreateUser($translator_permissions);
$this->adminUser = $this
->drupalCreateUser($admin_permissions);
// Add languages.
foreach ($this->langcodes as $langcode) {
ConfigurableLanguage::createFromLangcode($langcode)
->save();
}
$this
->drupalPlaceBlock('local_tasks_block');
$this
->drupalPlaceBlock('page_title_block');
}
/**
* Tests the translation of field and field storage configuration.
*/
public function testFieldConfigTranslation() {
// Add a test field which has a translatable field setting and a
// translatable field storage setting.
$field_name = strtolower($this
->randomMachineName());
$field_storage = FieldStorageConfig::create([
'field_name' => $field_name,
'entity_type' => 'entity_test',
'type' => 'test_field',
]);
$translatable_storage_setting = $this
->randomString();
$field_storage
->setSetting('translatable_storage_setting', $translatable_storage_setting);
$field_storage
->save();
$bundle = strtolower($this
->randomMachineName());
entity_test_create_bundle($bundle);
$field = FieldConfig::create([
'field_name' => $field_name,
'entity_type' => 'entity_test',
'bundle' => $bundle,
]);
$translatable_field_setting = $this
->randomString();
$field
->setSetting('translatable_field_setting', $translatable_field_setting);
$field
->save();
$this
->drupalLogin($this->translatorUser);
$this
->drupalGet("/entity_test/structure/{$bundle}/fields/entity_test.{$bundle}.{$field_name}/translate");
$this
->clickLink('Add');
$this
->assertSession()
->pageTextContains('Translatable field setting');
$this
->assertSession()
->assertEscaped($translatable_field_setting);
$this
->assertSession()
->pageTextContains('Translatable storage setting');
$this
->assertSession()
->assertEscaped($translatable_storage_setting);
// Add translation for label.
$field_label_fr = $this
->randomString();
$edit = [
"translation[config_names][field.field.entity_test.{$bundle}.{$field_name}][label]" => $field_label_fr,
];
$this
->submitForm($edit, 'Save translation');
$this
->drupalLogout();
// Check if the translated label appears.
$this
->drupalLogin($this->adminUser);
$this
->drupalGet("/fr/entity_test/structure/{$bundle}/fields");
$this
->assertSession()
->assertEscaped($field_label_fr);
// Clear cache on French version and check for translated label.
$this
->drupalGet('/fr/admin/config/development/performance');
$this
->submitForm([], 'Clear all caches');
$this
->drupalGet("/fr/entity_test/structure/{$bundle}/fields");
// Check if the translation is still there.
$this
->assertSession()
->assertEscaped($field_label_fr);
// Clear cache on default version and check for translated label.
$this
->drupalGet('/admin/config/development/performance');
$this
->submitForm([], 'Clear all caches');
$this
->drupalGet("/fr/entity_test/structure/{$bundle}/fields");
// Check if the translation is still there.
$this
->assertSession()
->assertEscaped($field_label_fr);
}
}