View source
<?php
namespace Drupal\config\Tests;
use Drupal\language\Entity\ConfigurableLanguage;
use Drupal\simpletest\KernelTestBase;
class ConfigLanguageOverrideTest extends KernelTestBase {
public static $modules = array(
'user',
'language',
'config_test',
'system',
'field',
);
protected function setUp() {
parent::setUp();
$this
->installConfig(array(
'config_test',
));
}
function testConfigLanguageOverride() {
\Drupal::languageManager()
->setConfigOverrideLanguage(\Drupal::languageManager()
->getLanguage('en'));
$config = \Drupal::config('config_test.system');
$this
->assertIdentical($config
->get('foo'), 'en bar');
$raw = $config
->getRawData();
$this
->assertIdentical($raw['foo'], 'bar');
ConfigurableLanguage::createFromLangcode('fr')
->save();
ConfigurableLanguage::createFromLangcode('de')
->save();
\Drupal::languageManager()
->setConfigOverrideLanguage(\Drupal::languageManager()
->getLanguage('fr'));
$config = \Drupal::config('config_test.system');
$this
->assertIdentical($config
->get('foo'), 'fr bar');
\Drupal::languageManager()
->setConfigOverrideLanguage(\Drupal::languageManager()
->getLanguage('de'));
$config = \Drupal::config('config_test.system');
$this
->assertIdentical($config
->get('foo'), 'de bar');
\Drupal::languageManager()
->getLanguageConfigOverride('de', 'config_test.new')
->set('language', 'override')
->save();
$config = \Drupal::config('config_test.new');
$this
->assertTrue($config
->isNew(), 'The configuration object config_test.new is new');
$this
->assertIdentical($config
->get('language'), 'override');
$this
->assertIdentical($config
->getOriginal('language', FALSE), NULL);
\Drupal::configFactory()
->getEditable('config_test.foo')
->set('value', array(
'key' => 'original',
))
->set('label', 'Original')
->save();
\Drupal::languageManager()
->getLanguageConfigOverride('de', 'config_test.foo')
->set('value', array(
'key' => 'override',
))
->set('label', 'Override')
->save();
\Drupal::languageManager()
->getLanguageConfigOverride('fr', 'config_test.foo')
->set('value', array(
'key' => 'override',
))
->save();
\Drupal::configFactory()
->clearStaticCache();
$config = \Drupal::config('config_test.foo');
$this
->assertIdentical($config
->get('value'), array(
'key' => 'override',
));
\Drupal::languageManager()
->setConfigOverrideLanguage(\Drupal::languageManager()
->getLanguage('en'));
\Drupal::configFactory()
->rename('config_test.foo', 'config_test.bar');
$config = \Drupal::config('config_test.bar');
$this
->assertEqual($config
->get('value'), array(
'key' => 'original',
));
$override = \Drupal::languageManager()
->getLanguageConfigOverride('de', 'config_test.foo');
$this
->assertTrue($override
->isNew());
$this
->assertEqual($override
->get('value'), NULL);
$override = \Drupal::languageManager()
->getLanguageConfigOverride('de', 'config_test.bar');
$this
->assertFalse($override
->isNew());
$this
->assertEqual($override
->get('value'), array(
'key' => 'override',
));
$override = \Drupal::languageManager()
->getLanguageConfigOverride('fr', 'config_test.bar');
$this
->assertFalse($override
->isNew());
$this
->assertEqual($override
->get('value'), array(
'key' => 'override',
));
$config = \Drupal::configFactory()
->getEditable('config_test.bar')
->clear('value.key')
->save();
$this
->assertEqual($config
->get('value'), array());
$override = \Drupal::languageManager()
->getLanguageConfigOverride('de', 'config_test.bar');
$this
->assertFalse($override
->isNew());
$this
->assertEqual($override
->get('value'), NULL);
$override = \Drupal::languageManager()
->getLanguageConfigOverride('fr', 'config_test.bar');
$this
->assertTrue($override
->isNew());
$this
->assertEqual($override
->get('value'), NULL);
\Drupal::configFactory()
->getEditable('config_test.bar')
->delete();
$override = \Drupal::languageManager()
->getLanguageConfigOverride('de', 'config_test.bar');
$this
->assertTrue($override
->isNew());
$this
->assertEqual($override
->get('value'), NULL);
}
}