Chris@0: drupalCreateUser(['administer languages', 'access administration pages']); Chris@0: // User to change their default language. Chris@0: $web_user = $this->drupalCreateUser(); Chris@0: Chris@0: // Add custom language. Chris@0: $this->drupalLogin($admin_user); Chris@0: // Code for the language. Chris@0: $langcode = 'xx'; Chris@0: // The English name for the language. Chris@0: $name = $this->randomMachineName(16); Chris@0: $edit = [ Chris@0: 'predefined_langcode' => 'custom', Chris@0: 'langcode' => $langcode, Chris@0: 'label' => $name, Chris@0: 'direction' => LanguageInterface::DIRECTION_LTR, Chris@0: ]; Chris@0: $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language')); Chris@0: $this->drupalLogout(); Chris@0: Chris@0: // Log in as normal user and edit account settings. Chris@0: $this->drupalLogin($web_user); Chris@0: $path = 'user/' . $web_user->id() . '/edit'; Chris@0: $this->drupalGet($path); Chris@0: // Ensure language settings widget is available. Chris@0: $this->assertText(t('Language'), 'Language selector available.'); Chris@0: // Ensure custom language is present. Chris@0: $this->assertText($name, 'Language present on form.'); Chris@0: // Switch to our custom language. Chris@0: $edit = [ Chris@0: 'preferred_langcode' => $langcode, Chris@0: ]; Chris@0: $this->drupalPostForm($path, $edit, t('Save')); Chris@0: // Ensure form was submitted successfully. Chris@0: $this->assertText(t('The changes have been saved.'), 'Changes were saved.'); Chris@0: // Check if language was changed. Chris@0: $this->assertOptionSelected('edit-preferred-langcode', $langcode, 'Default language successfully updated.'); Chris@0: Chris@0: $this->drupalLogout(); Chris@0: } Chris@0: Chris@0: }