You are here

public function ConfigTranslationUiTest::testAccountSettingsConfigurationTranslation in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/config_translation/tests/src/Functional/ConfigTranslationUiTest.php \Drupal\Tests\config_translation\Functional\ConfigTranslationUiTest::testAccountSettingsConfigurationTranslation()
  2. 10 core/modules/config_translation/tests/src/Functional/ConfigTranslationUiTest.php \Drupal\Tests\config_translation\Functional\ConfigTranslationUiTest::testAccountSettingsConfigurationTranslation()

Tests the account settings translation interface.

This is the only special case so far where we have multiple configuration names involved building up one configuration translation form. Test that the translations are saved for all configuration names properly.

File

core/modules/config_translation/tests/src/Functional/ConfigTranslationUiTest.php, line 515

Class

ConfigTranslationUiTest
Translate settings and entities to various languages.

Namespace

Drupal\Tests\config_translation\Functional

Code

public function testAccountSettingsConfigurationTranslation() {
  $this
    ->drupalLogin($this->adminUser);
  $this
    ->drupalGet('admin/config/people/accounts');
  $this
    ->assertSession()
    ->linkExists(t('Translate @type', [
    '@type' => 'account settings',
  ]));
  $this
    ->drupalGet('admin/config/people/accounts/translate');
  $this
    ->assertSession()
    ->linkExists(t('Translate @type', [
    '@type' => 'account settings',
  ]));
  $this
    ->assertLinkByHref('admin/config/people/accounts/translate/fr/add');

  // Update account settings fields for French.
  $edit = [
    'translation[config_names][user.settings][anonymous]' => 'Anonyme',
    'translation[config_names][user.mail][status_blocked][subject]' => 'Testing, your account is blocked.',
    'translation[config_names][user.mail][status_blocked][body]' => 'Testing account blocked body.',
  ];
  $this
    ->drupalPostForm('admin/config/people/accounts/translate/fr/add', $edit, t('Save translation'));

  // Make sure the changes are saved and loaded back properly.
  $this
    ->drupalGet('admin/config/people/accounts/translate/fr/edit');
  foreach ($edit as $key => $value) {

    // Check the translations appear in the right field type as well.
    $xpath = '//' . (strpos($key, '[body]') ? 'textarea' : 'input') . '[@name="' . $key . '"]';
    $this
      ->assertFieldByXPath($xpath, $value);
  }

  // Check that labels for email settings appear.
  $this
    ->assertText(t('Account cancellation confirmation'));
  $this
    ->assertText(t('Password recovery'));
}