annotate core/modules/user/src/Tests/UserLanguageCreationTest.php @ 0:4c8ae668cc8c

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