annotate core/modules/user/tests/src/Functional/UserLanguageCreationTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 1fec387a4317
children
rev   line source
Chris@14 1 <?php
Chris@14 2
Chris@14 3 namespace Drupal\Tests\user\Functional;
Chris@14 4
Chris@14 5 use Drupal\language\Entity\ConfigurableLanguage;
Chris@14 6 use Drupal\Tests\BrowserTestBase;
Chris@14 7
Chris@14 8 /**
Chris@14 9 * Tests whether proper language is stored for new users and access to language
Chris@14 10 * selector.
Chris@14 11 *
Chris@14 12 * @group user
Chris@14 13 */
Chris@14 14 class UserLanguageCreationTest extends BrowserTestBase {
Chris@14 15
Chris@14 16 /**
Chris@14 17 * Modules to enable.
Chris@14 18 *
Chris@14 19 * @var array
Chris@14 20 */
Chris@14 21 public static $modules = ['user', 'language'];
Chris@14 22
Chris@14 23 /**
Chris@14 24 * Functional test for language handling during user creation.
Chris@14 25 */
Chris@14 26 public function testLocalUserCreation() {
Chris@14 27 // User to add and remove language and create new users.
Chris@14 28 $admin_user = $this->drupalCreateUser(['administer languages', 'access administration pages', 'administer users']);
Chris@14 29 $this->drupalLogin($admin_user);
Chris@14 30
Chris@14 31 // Add predefined language.
Chris@14 32 $langcode = 'fr';
Chris@14 33 ConfigurableLanguage::createFromLangcode($langcode)->save();
Chris@14 34
Chris@14 35 // Set language negotiation.
Chris@14 36 $edit = [
Chris@14 37 'language_interface[enabled][language-url]' => TRUE,
Chris@14 38 ];
Chris@14 39 $this->drupalPostForm('admin/config/regional/language/detection', $edit, t('Save settings'));
Chris@14 40 $this->assertText(t('Language detection configuration saved.'), 'Set language negotiation.');
Chris@14 41
Chris@14 42 // Check if the language selector is available on admin/people/create and
Chris@14 43 // set to the currently active language.
Chris@14 44 $this->drupalGet($langcode . '/admin/people/create');
Chris@14 45 $this->assertOptionSelected("edit-preferred-langcode", $langcode, 'Global language set in the language selector.');
Chris@14 46
Chris@14 47 // Create a user with the admin/people/create form and check if the correct
Chris@14 48 // language is set.
Chris@14 49 $username = $this->randomMachineName(10);
Chris@14 50 $edit = [
Chris@14 51 'name' => $username,
Chris@14 52 'mail' => $this->randomMachineName(4) . '@example.com',
Chris@14 53 'pass[pass1]' => $username,
Chris@14 54 'pass[pass2]' => $username,
Chris@14 55 ];
Chris@14 56
Chris@14 57 $this->drupalPostForm($langcode . '/admin/people/create', $edit, t('Create new account'));
Chris@14 58
Chris@14 59 $user = user_load_by_name($username);
Chris@14 60 $this->assertEqual($user->getPreferredLangcode(), $langcode, 'New user has correct preferred language set.');
Chris@14 61 $this->assertEqual($user->language()->getId(), $langcode, 'New user has correct profile language set.');
Chris@14 62
Chris@14 63 // Register a new user and check if the language selector is hidden.
Chris@14 64 $this->drupalLogout();
Chris@14 65
Chris@14 66 $this->drupalGet($langcode . '/user/register');
Chris@14 67 $this->assertNoFieldByName('language[fr]', 'Language selector is not accessible.');
Chris@14 68
Chris@14 69 $username = $this->randomMachineName(10);
Chris@14 70 $edit = [
Chris@14 71 'name' => $username,
Chris@14 72 'mail' => $this->randomMachineName(4) . '@example.com',
Chris@14 73 ];
Chris@14 74
Chris@14 75 $this->drupalPostForm($langcode . '/user/register', $edit, t('Create new account'));
Chris@14 76
Chris@14 77 $user = user_load_by_name($username);
Chris@14 78 $this->assertEqual($user->getPreferredLangcode(), $langcode, 'New user has correct preferred language set.');
Chris@14 79 $this->assertEqual($user->language()->getId(), $langcode, 'New user has correct profile language set.');
Chris@14 80
Chris@14 81 // Test if the admin can use the language selector and if the
Chris@14 82 // correct language is was saved.
Chris@14 83 $user_edit = $langcode . '/user/' . $user->id() . '/edit';
Chris@14 84
Chris@14 85 $this->drupalLogin($admin_user);
Chris@14 86 $this->drupalGet($user_edit);
Chris@14 87 $this->assertOptionSelected("edit-preferred-langcode", $langcode, 'Language selector is accessible and correct language is selected.');
Chris@14 88
Chris@14 89 // Set passRaw so we can log in the new user.
Chris@14 90 $user->passRaw = $this->randomMachineName(10);
Chris@14 91 $edit = [
Chris@14 92 'pass[pass1]' => $user->passRaw,
Chris@14 93 'pass[pass2]' => $user->passRaw,
Chris@14 94 ];
Chris@14 95
Chris@14 96 $this->drupalPostForm($user_edit, $edit, t('Save'));
Chris@14 97
Chris@14 98 $this->drupalLogin($user);
Chris@14 99 $this->drupalGet($user_edit);
Chris@14 100 $this->assertOptionSelected("edit-preferred-langcode", $langcode, 'Language selector is accessible and correct language is selected.');
Chris@14 101 }
Chris@14 102
Chris@14 103 }