Chris@0: drupalCreateUser(['administer languages', 'access administration pages', 'administer users']); Chris@0: $this->drupalLogin($admin_user); Chris@0: Chris@0: // Add predefined language. Chris@0: $langcode = 'fr'; Chris@0: ConfigurableLanguage::createFromLangcode($langcode)->save(); Chris@0: Chris@0: // Set language negotiation. Chris@0: $edit = [ Chris@0: 'language_interface[enabled][language-url]' => TRUE, Chris@0: ]; Chris@0: $this->drupalPostForm('admin/config/regional/language/detection', $edit, t('Save settings')); Chris@0: $this->assertText(t('Language detection configuration saved.'), 'Set language negotiation.'); Chris@0: Chris@0: // Check if the language selector is available on admin/people/create and Chris@0: // set to the currently active language. Chris@0: $this->drupalGet($langcode . '/admin/people/create'); Chris@0: $this->assertOptionSelected("edit-preferred-langcode", $langcode, 'Global language set in the language selector.'); Chris@0: Chris@0: // Create a user with the admin/people/create form and check if the correct Chris@0: // language is set. Chris@0: $username = $this->randomMachineName(10); Chris@0: $edit = [ Chris@0: 'name' => $username, Chris@0: 'mail' => $this->randomMachineName(4) . '@example.com', Chris@0: 'pass[pass1]' => $username, Chris@0: 'pass[pass2]' => $username, Chris@0: ]; Chris@0: Chris@0: $this->drupalPostForm($langcode . '/admin/people/create', $edit, t('Create new account')); Chris@0: Chris@0: $user = user_load_by_name($username); Chris@0: $this->assertEqual($user->getPreferredLangcode(), $langcode, 'New user has correct preferred language set.'); Chris@0: $this->assertEqual($user->language()->getId(), $langcode, 'New user has correct profile language set.'); Chris@0: Chris@0: // Register a new user and check if the language selector is hidden. Chris@0: $this->drupalLogout(); Chris@0: Chris@0: $this->drupalGet($langcode . '/user/register'); Chris@0: $this->assertNoFieldByName('language[fr]', 'Language selector is not accessible.'); Chris@0: Chris@0: $username = $this->randomMachineName(10); Chris@0: $edit = [ Chris@0: 'name' => $username, Chris@0: 'mail' => $this->randomMachineName(4) . '@example.com', Chris@0: ]; Chris@0: Chris@0: $this->drupalPostForm($langcode . '/user/register', $edit, t('Create new account')); Chris@0: Chris@0: $user = user_load_by_name($username); Chris@0: $this->assertEqual($user->getPreferredLangcode(), $langcode, 'New user has correct preferred language set.'); Chris@0: $this->assertEqual($user->language()->getId(), $langcode, 'New user has correct profile language set.'); Chris@0: Chris@0: // Test if the admin can use the language selector and if the Chris@0: // correct language is was saved. Chris@0: $user_edit = $langcode . '/user/' . $user->id() . '/edit'; Chris@0: Chris@0: $this->drupalLogin($admin_user); Chris@0: $this->drupalGet($user_edit); Chris@0: $this->assertOptionSelected("edit-preferred-langcode", $langcode, 'Language selector is accessible and correct language is selected.'); Chris@0: Chris@0: // Set pass_raw so we can log in the new user. Chris@0: $user->pass_raw = $this->randomMachineName(10); Chris@0: $edit = [ Chris@0: 'pass[pass1]' => $user->pass_raw, Chris@0: 'pass[pass2]' => $user->pass_raw, Chris@0: ]; Chris@0: Chris@0: $this->drupalPostForm($user_edit, $edit, t('Save')); Chris@0: Chris@0: $this->drupalLogin($user); Chris@0: $this->drupalGet($user_edit); Chris@0: $this->assertOptionSelected("edit-preferred-langcode", $langcode, 'Language selector is accessible and correct language is selected.'); Chris@0: } Chris@0: Chris@0: }