View source
<?php
namespace Drupal\Tests\config_translation\Functional;
use Drupal\field\Entity\FieldConfig;
use Drupal\field\Entity\FieldStorageConfig;
use Drupal\filter\Entity\FilterFormat;
use Drupal\language\Entity\ConfigurableLanguage;
use Drupal\Tests\BrowserTestBase;
class ConfigTranslationCacheTest extends BrowserTestBase {
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',
];
protected $defaultTheme = 'stark';
protected $langcodes = [
'fr',
'ta',
];
protected $adminUser;
protected $translatorUser;
protected $localeStorage;
protected function setUp() : void {
parent::setUp();
$translator_permissions = [
'translate configuration',
];
$filter_test_format = FilterFormat::load('filter_test');
$filtered_html_format = FilterFormat::load('filtered_html');
$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',
]);
$this->translatorUser = $this
->drupalCreateUser($translator_permissions);
$this->adminUser = $this
->drupalCreateUser($admin_permissions);
foreach ($this->langcodes as $langcode) {
ConfigurableLanguage::createFromLangcode($langcode)
->save();
}
$this
->drupalPlaceBlock('local_tasks_block');
$this
->drupalPlaceBlock('page_title_block');
}
public function testFieldConfigTranslation() {
$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);
$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();
$this
->drupalLogin($this->adminUser);
$this
->drupalGet("/fr/entity_test/structure/{$bundle}/fields");
$this
->assertSession()
->assertEscaped($field_label_fr);
$this
->drupalGet('/fr/admin/config/development/performance');
$this
->submitForm([], 'Clear all caches');
$this
->drupalGet("/fr/entity_test/structure/{$bundle}/fields");
$this
->assertSession()
->assertEscaped($field_label_fr);
$this
->drupalGet('/admin/config/development/performance');
$this
->submitForm([], 'Clear all caches');
$this
->drupalGet("/fr/entity_test/structure/{$bundle}/fields");
$this
->assertSession()
->assertEscaped($field_label_fr);
}
}