5f96d89e5b237e8ec674fca94bfbddc51892be3b
[yaffs-website] / web / core / modules / language / src / Tests / LanguageLocaleListTest.php
1 <?php
2
3 namespace Drupal\language\Tests;
4
5 use Drupal\simpletest\WebTestBase;
6
7 /**
8  * Adds a new language with translations and tests language list order.
9  *
10  * @group language
11  */
12 class LanguageLocaleListTest extends WebTestBase {
13
14   /**
15    * Modules to enable.
16    *
17    * @var array
18    */
19   public static $modules = ['language', 'locale'];
20
21   /**
22    * {@inheritdoc}
23    */
24   protected function setUp() {
25     parent::setUp();
26     // Add a default locale storage for all these tests.
27     $this->storage = $this->container->get('locale.storage');
28   }
29
30   /**
31    * Tests adding, editing, and deleting languages.
32    */
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);
37
38     // Add predefined language.
39     $edit = [
40       'predefined_langcode' => 'fr',
41     ];
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();
46
47     // Translate Spanish language to French (Espagnol).
48     $source = $this->storage->createString([
49       'source' => 'Spanish',
50       'context' => '',
51     ])->save();
52     $this->storage->createTranslation([
53       'lid' => $source->lid,
54       'language' => 'fr',
55       'translation' => 'Espagnol',
56     ])->save();
57
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.
64     array_pop($options);
65     // Order language list.
66     $options_ordered = $options;
67     natcasesort($options_ordered);
68
69     // Check the language list displayed is ordered.
70     $this->assertTrue($options === $options_ordered, 'Language list is ordered.');
71   }
72
73 }