Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Tests\user\Functional;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\Core\Language\LanguageInterface;
|
Chris@0
|
6 use Drupal\Tests\BrowserTestBase;
|
Chris@0
|
7
|
Chris@0
|
8 /**
|
Chris@0
|
9 * Functional tests for a user's ability to change their default language.
|
Chris@0
|
10 *
|
Chris@0
|
11 * @group user
|
Chris@0
|
12 */
|
Chris@0
|
13 class UserLanguageTest extends BrowserTestBase {
|
Chris@0
|
14
|
Chris@0
|
15 /**
|
Chris@0
|
16 * Modules to enable.
|
Chris@0
|
17 *
|
Chris@0
|
18 * @var array
|
Chris@0
|
19 */
|
Chris@0
|
20 public static $modules = ['user', 'language'];
|
Chris@0
|
21
|
Chris@0
|
22 /**
|
Chris@0
|
23 * Test if user can change their default language.
|
Chris@0
|
24 */
|
Chris@0
|
25 public function testUserLanguageConfiguration() {
|
Chris@0
|
26 // User to add and remove language.
|
Chris@0
|
27 $admin_user = $this->drupalCreateUser(['administer languages', 'access administration pages']);
|
Chris@0
|
28 // User to change their default language.
|
Chris@0
|
29 $web_user = $this->drupalCreateUser();
|
Chris@0
|
30
|
Chris@0
|
31 // Add custom language.
|
Chris@0
|
32 $this->drupalLogin($admin_user);
|
Chris@0
|
33 // Code for the language.
|
Chris@0
|
34 $langcode = 'xx';
|
Chris@0
|
35 // The English name for the language.
|
Chris@0
|
36 $name = $this->randomMachineName(16);
|
Chris@0
|
37 $edit = [
|
Chris@0
|
38 'predefined_langcode' => 'custom',
|
Chris@0
|
39 'langcode' => $langcode,
|
Chris@0
|
40 'label' => $name,
|
Chris@0
|
41 'direction' => LanguageInterface::DIRECTION_LTR,
|
Chris@0
|
42 ];
|
Chris@0
|
43 $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
|
Chris@0
|
44 $this->drupalLogout();
|
Chris@0
|
45
|
Chris@0
|
46 // Log in as normal user and edit account settings.
|
Chris@0
|
47 $this->drupalLogin($web_user);
|
Chris@0
|
48 $path = 'user/' . $web_user->id() . '/edit';
|
Chris@0
|
49 $this->drupalGet($path);
|
Chris@0
|
50 // Ensure language settings widget is available.
|
Chris@0
|
51 $this->assertText(t('Language'), 'Language selector available.');
|
Chris@0
|
52 // Ensure custom language is present.
|
Chris@0
|
53 $this->assertText($name, 'Language present on form.');
|
Chris@0
|
54 // Switch to our custom language.
|
Chris@0
|
55 $edit = [
|
Chris@0
|
56 'preferred_langcode' => $langcode,
|
Chris@0
|
57 ];
|
Chris@0
|
58 $this->drupalPostForm($path, $edit, t('Save'));
|
Chris@0
|
59 // Ensure form was submitted successfully.
|
Chris@0
|
60 $this->assertText(t('The changes have been saved.'), 'Changes were saved.');
|
Chris@0
|
61 // Check if language was changed.
|
Chris@0
|
62 $this->assertOptionSelected('edit-preferred-langcode', $langcode, 'Default language successfully updated.');
|
Chris@0
|
63
|
Chris@0
|
64 $this->drupalLogout();
|
Chris@0
|
65 }
|
Chris@0
|
66
|
Chris@0
|
67 }
|