3 namespace Drupal\language\Tests;
5 use Drupal\simpletest\WebTestBase;
8 * Adds a new language with translations and tests language list order.
12 class LanguageLocaleListTest extends WebTestBase {
19 public static $modules = ['language', 'locale'];
24 protected function setUp() {
26 // Add a default locale storage for all these tests.
27 $this->storage = $this->container->get('locale.storage');
31 * Tests adding, editing, and deleting languages.
33 public function testLanguageLocaleList() {
34 // User to add and remove language.
35 $admin_user = $this->drupalCreateUser(['administer languages', 'access administration pages']);
36 $this->drupalLogin($admin_user);
38 // Add predefined language.
40 'predefined_langcode' => 'fr',
42 $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
43 $this->assertText('The language French has been created and can now be used');
44 $this->assertUrl(\Drupal::url('entity.configurable_language.collection', [], ['absolute' => TRUE]));
45 $this->rebuildContainer();
47 // Translate Spanish language to French (Espagnol).
48 $source = $this->storage->createString([
49 'source' => 'Spanish',
52 $this->storage->createTranslation([
53 'lid' => $source->lid,
55 'translation' => 'Espagnol',
58 // Get language list displayed in select list.
59 $this->drupalGet('fr/admin/config/regional/language/add');
60 $select = $this->xpath('//select[@id="edit-predefined-langcode"]');
61 $select_element = (array) end($select);
62 $options = $select_element['option'];
63 // Remove the 'Custom language...' option form the end.
65 // Order language list.
66 $options_ordered = $options;
67 natcasesort($options_ordered);
69 // Check the language list displayed is ordered.
70 $this->assertTrue($options === $options_ordered, 'Language list is ordered.');