storage = $this->container->get('locale.storage'); } /** * Tests adding, editing, and deleting languages. */ 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(\Drupal::url('entity.configurable_language.collection', [], ['absolute' => TRUE])); $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'); $select = $this->xpath('//select[@id="edit-predefined-langcode"]'); $select_element = (array) end($select); $options = $select_element['option']; // 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.'); } }