function LanguageConfigurationElementTest::testDefaultLangcode

Same name and namespace in other branches
  1. 10 core/modules/language/tests/src/Functional/LanguageConfigurationElementTest.php \Drupal\Tests\language\Functional\LanguageConfigurationElementTest::testDefaultLangcode()
  2. 11.x core/modules/language/tests/src/Functional/LanguageConfigurationElementTest.php \Drupal\Tests\language\Functional\LanguageConfigurationElementTest::testDefaultLangcode()
  3. 9 core/modules/language/tests/src/Functional/LanguageConfigurationElementTest.php \Drupal\Tests\language\Functional\LanguageConfigurationElementTest::testDefaultLangcode()
  4. 8.9.x core/modules/language/tests/src/Functional/LanguageConfigurationElementTest.php \Drupal\Tests\language\Functional\LanguageConfigurationElementTest::testDefaultLangcode()

Tests that default langcode is correctly returned.

File

core/modules/language/tests/src/Functional/LanguageConfigurationElementTest.php, line 104

Class

LanguageConfigurationElementTest
Tests the features of the language configuration element field.

Namespace

Drupal\Tests\language\Functional

Code

public function testDefaultLangcode() : void {
  // Add some custom languages.
  foreach ([
    'aa',
    'bb',
    'cc',
  ] as $language_code) {
    ConfigurableLanguage::create([
      'id' => $language_code,
      'label' => $this->randomMachineName(),
    ])
      ->save();
  }
  // Ensure the bundle under test exist, to avoid config validation errors.
  EntityTestHelper::createBundle('custom_bundle');
  // Fixed language.
  ContentLanguageSettings::loadByEntityTypeBundle('entity_test', 'custom_bundle')->setLanguageAlterable(TRUE)
    ->setDefaultLangcode('bb')
    ->save();
  $this->assertSame('bb', $this->getDefaultLangcode());
  // Current interface.
  ContentLanguageSettings::loadByEntityTypeBundle('entity_test', 'custom_bundle')->setDefaultLangcode('current_interface')
    ->save();
  $language_interface = \Drupal::languageManager()->getCurrentLanguage();
  $this->assertSame($language_interface->getId(), $this->getDefaultLangcode());
  // Site's default.
  $old_default = \Drupal::languageManager()->getDefaultLanguage();
  // Ensure the language entity default value is correct.
  $configurable_language = ConfigurableLanguage::load($old_default->getId());
  $this->assertTrue($configurable_language->isDefault(), 'The en language entity is flagged as the default language.');
  $this->config('system.site')
    ->set('default_langcode', 'cc')
    ->save();
  ContentLanguageSettings::loadByEntityTypeBundle('entity_test', 'custom_bundle')->setDefaultLangcode(LanguageInterface::LANGCODE_SITE_DEFAULT)
    ->save();
  $this->assertSame('cc', $this->getDefaultLangcode());
  // Ensure the language entity default value is correct.
  $configurable_language = ConfigurableLanguage::load($old_default->getId());
  $this->assertFalse($configurable_language->isDefault(), 'The en language entity is not flagged as the default language.');
  $configurable_language = ConfigurableLanguage::load('cc');
  // Check calling the
  // \Drupal\language\ConfigurableLanguageInterface::isDefault() method
  // directly.
  $this->assertTrue($configurable_language->isDefault(), 'The cc language entity is flagged as the default language.');
  // Check the default value of a language field when the author's preferred
  // option is selected. First, create a user with a preferred language.
  $some_user = $this->createUser(values: [
    'preferred_langcode' => 'bb',
  ]);
  $this->drupalLogin($some_user);
  ContentLanguageSettings::loadByEntityTypeBundle('entity_test', 'custom_bundle')->setDefaultLangcode('authors_default')
    ->save();
  $this->assertSame('bb', $this->getDefaultLangcode());
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.