Version 1
[yaffs-website] / web / core / modules / language / src / Tests / LanguageLocaleListTest.php
diff --git a/web/core/modules/language/src/Tests/LanguageLocaleListTest.php b/web/core/modules/language/src/Tests/LanguageLocaleListTest.php
new file mode 100644 (file)
index 0000000..5f96d89
--- /dev/null
@@ -0,0 +1,73 @@
+<?php
+
+namespace Drupal\language\Tests;
+
+use Drupal\simpletest\WebTestBase;
+
+/**
+ * Adds a new language with translations and tests language list order.
+ *
+ * @group language
+ */
+class LanguageLocaleListTest extends WebTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['language', 'locale'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    // Add a default locale storage for all these tests.
+    $this->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.');
+  }
+
+}