diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigEntityStorage.php b/core/lib/Drupal/Core/Config/Entity/ConfigEntityStorage.php index 1527ac6467eeaf03c463a0fe37cfbe64c6b6be31..27da150462a61664972f5b224ba4058ebc4b6b9e 100644 --- a/core/lib/Drupal/Core/Config/Entity/ConfigEntityStorage.php +++ b/core/lib/Drupal/Core/Config/Entity/ConfigEntityStorage.php @@ -195,8 +195,8 @@ protected function doLoadMultiple(array $ids = NULL) { * {@inheritdoc} */ protected function doCreate(array $values) { - // Set default language to site default if not provided. - $values += array($this->langcodeKey => $this->languageManager->getDefaultLanguage()->getId()); + // Set default language to current language if not provided. + $values += array($this->langcodeKey => $this->languageManager->getCurrentLanguage()->getId()); $entity = new $this->entityClass($values, $this->entityTypeId); return $entity; diff --git a/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityStorageTest.php b/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityStorageTest.php index f754615aac537d5e490d236a4828478aefb8bdc0..2302eaa76b28a0d50b2e69f8fda0660be518b437 100644 --- a/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityStorageTest.php +++ b/core/tests/Drupal/Tests/Core/Config/Entity/ConfigEntityStorageTest.php @@ -139,8 +139,8 @@ protected function setUp() { $this->languageManager = $this->getMock('Drupal\Core\Language\LanguageManagerInterface'); $this->languageManager->expects($this->any()) - ->method('getDefaultLanguage') - ->will($this->returnValue(new Language(array('langcode' => 'en')))); + ->method('getCurrentLanguage') + ->willReturn(new Language(array('id' => 'hu'))); $this->configFactory = $this->getMock('Drupal\Core\Config\ConfigFactoryInterface'); @@ -175,6 +175,7 @@ protected function setUp() { $container->set('config.typed', $this->typedConfigManager); $container->set('cache_tags.invalidator', $this->cacheTagsInvalidator); $container->set('config.manager', $this->configManager); + $container->set('language_manager', $this->languageManager); \Drupal::setContainer($container); } @@ -229,6 +230,34 @@ public function testCreate() { return $entity; } + /** + * @covers ::create + * @covers ::doCreate + */ + public function testCreateWithCurrentLanguage() { + $this->languageManager->expects($this->any()) + ->method('getLanguage') + ->with('hu') + ->willReturn(new Language(array('id' => 'hu'))); + + $entity = $this->entityStorage->create(array('id' => 'foo')); + $this->assertSame('hu', $entity->language()->getId()); + } + + /** + * @covers ::create + * @covers ::doCreate + */ + public function testCreateWithExplicitLanguage() { + $this->languageManager->expects($this->any()) + ->method('getLanguage') + ->with('en') + ->willReturn(new Language(array('id' => 'en'))); + + $entity = $this->entityStorage->create(array('id' => 'foo', 'langcode' => 'en')); + $this->assertSame('en', $entity->language()->getId()); + } + /** * @covers ::save * @covers ::doSave