class LocaleConfigSubscriberForeignTest

Same name and namespace in other branches
  1. 11.x core/modules/locale/tests/src/Kernel/LocaleConfigSubscriberForeignTest.php \Drupal\Tests\locale\Kernel\LocaleConfigSubscriberForeignTest

Tests default configuration handling with a foreign default language.

@group locale @group #slow

Hierarchy

Expanded class hierarchy of LocaleConfigSubscriberForeignTest

File

core/modules/locale/tests/src/Kernel/LocaleConfigSubscriberForeignTest.php, line 17

Namespace

Drupal\Tests\locale\Kernel
View source
class LocaleConfigSubscriberForeignTest extends LocaleConfigSubscriberTest {
  
  /**
   * {@inheritdoc}
   */
  public function register(ContainerBuilder $container) {
    parent::register($container);
    $language = Language::$defaultValues;
    $language['id'] = 'hu';
    $language['name'] = 'Hungarian';
    $container->setParameter('language.default_values', $language);
  }
  
  /**
   * {@inheritdoc}
   */
  protected function setUpLanguages() {
    parent::setUpLanguages();
    ConfigurableLanguage::createFromLangcode('hu')->save();
  }
  
  /**
   * {@inheritdoc}
   */
  protected function setUpLocale() {
    parent::setUpLocale();
    $this->setUpTranslation('locale_test.translation', 'test', 'English test', 'Hungarian test', 'hu', TRUE);
  }
  
  /**
   * Tests that the language of default configuration was updated.
   */
  public function testDefaultConfigLanguage() : void {
    $this->assertEquals('hu', $this->configFactory
      ->getEditable('locale_test.no_translation')
      ->get('langcode'));
    $this->assertEquals('hu', $this->configFactory
      ->getEditable('locale_test.translation')
      ->get('langcode'));
    $this->assertEquals('Hungarian test', $this->configFactory
      ->getEditable('locale_test.translation')
      ->get('test'));
  }
  
  /**
   * Tests creating translations of shipped configuration.
   */
  public function testCreateActiveTranslation() : void {
    $config_name = 'locale_test.no_translation';
    $this->saveLanguageActive($config_name, 'test', 'Test (Hungarian)', 'hu');
    $this->assertTranslation($config_name, 'Test (Hungarian)', 'hu');
  }
  
  /**
   * Tests importing community translations of shipped configuration.
   */
  public function testLocaleCreateActiveTranslation() : void {
    $config_name = 'locale_test.no_translation';
    $this->saveLocaleTranslationData($config_name, 'test', 'Test', 'Test (Hungarian)', 'hu', TRUE);
    $this->assertTranslation($config_name, 'Test (Hungarian)', 'hu', FALSE);
  }
  
  /**
   * Tests updating translations of shipped configuration.
   */
  public function testUpdateActiveTranslation() : void {
    $config_name = 'locale_test.translation';
    $this->saveLanguageActive($config_name, 'test', 'Updated Hungarian test', 'hu');
    $this->assertTranslation($config_name, 'Updated Hungarian test', 'hu');
  }
  
  /**
   * Tests updating community translations of shipped configuration.
   */
  public function testLocaleUpdateActiveTranslation() : void {
    $config_name = 'locale_test.translation';
    $this->saveLocaleTranslationData($config_name, 'test', 'English test', 'Updated Hungarian test', 'hu', TRUE);
    $this->assertTranslation($config_name, 'Updated Hungarian test', 'hu', FALSE);
  }
  
  /**
   * Tests deleting a translation override.
   */
  public function testDeleteTranslation() : void {
    $config_name = 'locale_test.translation';
    $this->deleteLanguageOverride($config_name, 'test', 'English test', 'de');
    // The German translation in this case will be forced to the Hungarian
    // source so its not overwritten with locale data later.
    $this->assertTranslation($config_name, 'Hungarian test', 'de');
  }
  
  /**
   * Tests deleting translations of shipped configuration.
   */
  public function testDeleteActiveTranslation() : void {
    $config_name = 'locale_test.translation';
    $this->configFactory
      ->getEditable($config_name)
      ->delete();
    // Deleting active configuration should not change the locale translation.
    $this->assertTranslation($config_name, 'Hungarian test', 'hu', FALSE);
  }
  
  /**
   * Tests deleting community translations of shipped configuration.
   */
  public function testLocaleDeleteActiveTranslation() : void {
    $config_name = 'locale_test.translation';
    $this->deleteLocaleTranslationData($config_name, 'test', 'English test', 'hu');
    // Deleting the locale translation should not change active config.
    $this->assertEquals('Hungarian test', $this->configFactory
      ->getEditable($config_name)
      ->get('test'));
  }
  
  /**
   * Tests that adding English creates a translation override.
   */
  public function testEnglish() : void {
    $config_name = 'locale_test.translation';
    ConfigurableLanguage::createFromLangcode('en')->save();
    // Adding a language on the UI would normally call updateConfigTranslations.
    $this->localeConfigManager
      ->updateConfigTranslations([
      $config_name,
    ], [
      'en',
    ]);
    $this->assertConfigOverride($config_name, 'test', 'English test', 'en');
    $this->configFactory
      ->getEditable('locale.settings')
      ->set('translate_english', TRUE)
      ->save();
    $this->saveLocaleTranslationData($config_name, 'test', 'English test', 'Updated English test', 'en');
    $this->assertTranslation($config_name, 'Updated English test', 'en', FALSE);
    $this->saveLanguageOverride($config_name, 'test', 'Updated English', 'en');
    $this->assertTranslation($config_name, 'Updated English', 'en');
    $this->deleteLocaleTranslationData($config_name, 'test', 'English test', 'en');
    $this->assertNoConfigOverride($config_name, 'en');
  }
  
  /**
   * Saves a language override.
   *
   * This will invoke LocaleConfigSubscriber through the event dispatcher. To
   * make sure the configuration was persisted correctly, the configuration
   * value is checked. Because LocaleConfigSubscriber temporarily disables the
   * override state of the configuration factory we check that the correct value
   * is restored afterwards.
   *
   * @param string $config_name
   *   The configuration name.
   * @param string $key
   *   The configuration key.
   * @param string $value
   *   The configuration value to save.
   * @param string $langcode
   *   The language code.
   */
  protected function saveLanguageActive($config_name, $key, $value, $langcode) {
    $this->configFactory
      ->getEditable($config_name)
      ->set($key, $value)
      ->save();
    $this->assertActiveConfig($config_name, $key, $value, $langcode);
  }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title
LocaleConfigSubscriberForeignTest::register public function
LocaleConfigSubscriberForeignTest::saveLanguageActive protected function Saves a language override.
LocaleConfigSubscriberForeignTest::setUpLanguages protected function Overrides LocaleConfigSubscriberTest::setUpLanguages
LocaleConfigSubscriberForeignTest::setUpLocale protected function Overrides LocaleConfigSubscriberTest::setUpLocale
LocaleConfigSubscriberForeignTest::testCreateActiveTranslation public function Tests creating translations of shipped configuration.
LocaleConfigSubscriberForeignTest::testDefaultConfigLanguage public function Tests that the language of default configuration was updated.
LocaleConfigSubscriberForeignTest::testDeleteActiveTranslation public function Tests deleting translations of shipped configuration.
LocaleConfigSubscriberForeignTest::testDeleteTranslation public function Tests deleting a translation override. Overrides LocaleConfigSubscriberTest::testDeleteTranslation
LocaleConfigSubscriberForeignTest::testEnglish public function Tests that adding English creates a translation override.
LocaleConfigSubscriberForeignTest::testLocaleCreateActiveTranslation public function Tests importing community translations of shipped configuration.
LocaleConfigSubscriberForeignTest::testLocaleDeleteActiveTranslation public function Tests deleting community translations of shipped configuration.
LocaleConfigSubscriberForeignTest::testLocaleUpdateActiveTranslation public function Tests updating community translations of shipped configuration.
LocaleConfigSubscriberForeignTest::testUpdateActiveTranslation public function Tests updating translations of shipped configuration.
LocaleConfigSubscriberTest::$configFactory protected property The configuration factory used in this test.
LocaleConfigSubscriberTest::$languageManager protected property The configurable language manager used in this test.
LocaleConfigSubscriberTest::$localeConfigManager protected property The locale configuration manager used in this test.
LocaleConfigSubscriberTest::$modules protected static property
LocaleConfigSubscriberTest::$stringStorage protected property The string storage used in this test.
LocaleConfigSubscriberTest::assertActiveConfig protected function Ensures configuration was saved correctly.
LocaleConfigSubscriberTest::assertConfigOverride protected function Ensures configuration was saved correctly.
LocaleConfigSubscriberTest::assertNoConfigOverride protected function Ensures configuration override is not present anymore.
LocaleConfigSubscriberTest::assertNoTranslation protected function Ensures no translation exists.
LocaleConfigSubscriberTest::assertTranslation protected function Asserts if a specific translation exists and its customization status.
LocaleConfigSubscriberTest::deleteLanguageOverride protected function Deletes a language override.
LocaleConfigSubscriberTest::deleteLocaleTranslationData protected function Deletes translation data from locale module.
LocaleConfigSubscriberTest::saveLanguageOverride protected function Saves a language override.
LocaleConfigSubscriberTest::saveLocaleTranslationData protected function Saves translation data from locale module.
LocaleConfigSubscriberTest::setUp protected function
LocaleConfigSubscriberTest::setUpDefaultLanguage protected function Sets up default language for this test.
LocaleConfigSubscriberTest::setUpNoTranslation protected function Sets up a configuration string without a translation.
LocaleConfigSubscriberTest::setUpTranslation protected function Sets up a configuration string with a translation.
LocaleConfigSubscriberTest::testCreateTranslation public function Tests creating translations of shipped configuration.
LocaleConfigSubscriberTest::testCreateTranslationMultiValue public function Tests creating translations configuration with multi value settings.
LocaleConfigSubscriberTest::testLocaleCreateTranslation public function Tests importing community translations of shipped configuration.
LocaleConfigSubscriberTest::testLocaleDeleteTranslation public function Tests deleting community translations of shipped configuration.
LocaleConfigSubscriberTest::testLocaleUpdateTranslation public function Tests updating community translations of shipped configuration.
LocaleConfigSubscriberTest::testUpdateTranslation public function Tests updating translations of shipped configuration.

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