public function LanguageConfigurationElementTest::testDefaultLangcode

Tests that the language_get_default_langcode() returns the correct values.

File

drupal/core/modules/language/lib/Drupal/language/Tests/LanguageConfigurationElementTest.php, line 68
Definition of Drupal\language\Tests\LanguageConfigurationElementTest.

Class

LanguageConfigurationElementTest
Functional tests for language configuration's effect on negotiation setup.

Namespace

Drupal\language\Tests

Code

public function testDefaultLangcode() {

  // Add some custom languages.
  foreach (array(
    'aa',
    'bb',
    'cc',
  ) as $language_code) {
    $language = new Language(array(
      'langcode' => $language_code,
      'name' => $this
        ->randomName(),
    ));
    language_save($language);
  }

  // Fixed language.
  language_save_default_configuration('custom_type', 'custom_bundle', array(
    'langcode' => 'bb',
    'language_hidden' => FALSE,
  ));
  $langcode = language_get_default_langcode('custom_type', 'custom_bundle');
  $this
    ->assertEqual($langcode, 'bb');

  // Current interface.
  language_save_default_configuration('custom_type', 'custom_bundle', array(
    'langcode' => 'current_interface',
    'language_hidden' => FALSE,
  ));
  $langcode = language_get_default_langcode('custom_type', 'custom_bundle');
  $language_interface = language(LANGUAGE_TYPE_INTERFACE);
  $this
    ->assertEqual($langcode, $language_interface->langcode);

  // Site's default.
  $old_default = language_default();
  $old_default->default = FALSE;
  language_save($old_default);
  $new_default = language_load('cc');
  $new_default->default = TRUE;
  language_save($new_default);
  language_save_default_configuration('custom_type', 'custom_bundle', array(
    'langcode' => 'site_default',
    'language_hidden' => FALSE,
  ));
  $langcode = language_get_default_langcode('custom_type', 'custom_bundle');
  $this
    ->assertEqual($langcode, 'cc');

  // Check the default value of a language field when authors preferred option
  // is selected.
  // Create first an user and assign a preferred langcode to him.
  $some_user = $this
    ->drupalCreateUser();
  $some_user->preferred_langcode = 'bb';
  $some_user
    ->save();
  $this
    ->drupalLogin($some_user);
  language_save_default_configuration('custom_type', 'some_bundle', array(
    'langcode' => 'authors_default',
    'language_hidden' => FALSE,
  ));
  $this
    ->drupalGet('language-tests/language_configuration_element_test');
  $this
    ->assertOptionSelected('edit-langcode', 'bb');
}