function LanguageLocaleListTest::testLanguageLocaleList

Same name and namespace in other branches
  1. 10 core/modules/language/tests/src/Functional/LanguageLocaleListTest.php \Drupal\Tests\language\Functional\LanguageLocaleListTest::testLanguageLocaleList()
  2. 11.x core/modules/language/tests/src/Functional/LanguageLocaleListTest.php \Drupal\Tests\language\Functional\LanguageLocaleListTest::testLanguageLocaleList()
  3. 9 core/modules/language/tests/src/Functional/LanguageLocaleListTest.php \Drupal\Tests\language\Functional\LanguageLocaleListTest::testLanguageLocaleList()

Tests adding, editing, and deleting languages.

File

core/modules/language/tests/src/Functional/LanguageLocaleListTest.php, line 39

Class

LanguageLocaleListTest
Adds a new language with translations and tests language list order.

Namespace

Drupal\Tests\language\Functional

Code

public function testLanguageLocaleList() {
  // User to add and remove language.
  $admin_user = $this->drupalCreateUser([
    'administer languages',
    'access administration pages',
  ]);
  $this->drupalLogin($admin_user);
  // Add predefined language.
  $edit = [
    'predefined_langcode' => 'fr',
  ];
  $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
  $this->assertText('The language French has been created and can now be used');
  $this->assertUrl(Url::fromRoute('entity.configurable_language.collection', [], [
    'absolute' => TRUE,
  ])->toString());
  $this->rebuildContainer();
  // Translate Spanish language to French (Espagnol).
  $source = $this->storage
    ->createString([
    'source' => 'Spanish',
    'context' => '',
  ])
    ->save();
  $this->storage
    ->createTranslation([
    'lid' => $source->lid,
    'language' => 'fr',
    'translation' => 'Espagnol',
  ])
    ->save();
  // Get language list displayed in select list.
  $this->drupalGet('fr/admin/config/regional/language/add');
  $option_elements = $this->xpath('//select[@id="edit-predefined-langcode/option"]');
  $options = [];
  foreach ($option_elements as $option_element) {
    $options[] = $option_element->getText();
  }
  // Remove the 'Custom language...' option form the end.
  array_pop($options);
  // Order language list.
  $options_ordered = $options;
  natcasesort($options_ordered);
  // Check the language list displayed is ordered.
  $this->assertTrue($options === $options_ordered, 'Language list is ordered.');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.