You are here

public function ConfigTranslationUiTest::testPluralConfigStringsSourceElements in Drupal 9

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

Tests the number of source elements for plural strings in config translation forms.

File

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

Class

ConfigTranslationUiTest
Translate settings and entities to various languages.

Namespace

Drupal\Tests\config_translation\Functional

Code

public function testPluralConfigStringsSourceElements() {
  $this
    ->drupalLogin($this->adminUser);

  // Languages to test, with various number of plural forms.
  $languages = [
    'vi' => [
      'plurals' => 1,
      'expected' => [
        TRUE,
        FALSE,
        FALSE,
        FALSE,
      ],
    ],
    'fr' => [
      'plurals' => 2,
      'expected' => [
        TRUE,
        TRUE,
        FALSE,
        FALSE,
      ],
    ],
    'sl' => [
      'plurals' => 4,
      'expected' => [
        TRUE,
        TRUE,
        TRUE,
        TRUE,
      ],
    ],
  ];
  foreach ($languages as $langcode => $data) {

    // Import a .po file to add a new language with a given number of plural forms
    $name = \Drupal::service('file_system')
      ->tempnam('temporary://', $langcode . '_') . '.po';
    file_put_contents($name, $this
      ->getPoFile($data['plurals']));
    $this
      ->drupalGet('admin/config/regional/translate/import');
    $this
      ->submitForm([
      'langcode' => $langcode,
      'files[file]' => $name,
    ], 'Import');

    // Change the config langcode of the 'files' view.
    $config = \Drupal::service('config.factory')
      ->getEditable('views.view.files');
    $config
      ->set('langcode', $langcode);
    $config
      ->save();

    // Go to the translation page of the 'files' view.
    $translation_url = 'admin/structure/views/view/files/translate/en/add';
    $this
      ->drupalGet($translation_url);

    // Check if the expected number of source elements are present.
    foreach ($data['expected'] as $index => $expected) {
      if ($expected) {
        $this
          ->assertSession()
          ->responseContains('edit-source-config-names-viewsviewfiles-display-default-display-options-fields-count-format-plural-string-' . $index);
      }
      else {
        $this
          ->assertSession()
          ->responseNotContains('edit-source-config-names-viewsviewfiles-display-default-display-options-fields-count-format-plural-string-' . $index);
      }
    }
  }
}