You are here

public function LanguageLocaleListTest::testLanguageLocaleList in Drupal 8

Same name and namespace in other branches
  1. 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.');
}