Issue #2014955 by YesCT, penyaskito, kfritsche, balintcsaba: Deleted bundles do not have their language configuration deleted

8.0.x
Alex Pott 2015-02-10 16:06:07 +00:00
parent 2524d8d5ba
commit 6cfaed4a83
2 changed files with 46 additions and 0 deletions

View File

@ -237,6 +237,17 @@ function language_entity_bundle_rename($entity_type_id, $bundle_old, $bundle_new
->save();
}
/**
* Implements hook_entity_bundle_delete().
*/
function language_entity_bundle_delete($entity_type_id, $bundle) {
// Remove the content language settings associated with the bundle.
$settings = ContentLanguageSettings::loadByEntityTypeBundle($entity_type_id, $bundle);
if (!$settings->isNew()) {
$settings->delete();
}
}
/**
* Returns the default language code assigned to an entity type and a bundle.
*

View File

@ -184,6 +184,41 @@ class LanguageConfigurationElementTest extends WebTestBase {
$this->assertEqual($configuration->uuid(), $uuid, 'The language configuration uuid has been kept on the new Article content type.');
}
/**
* Tests the language settings are deleted on bundle delete.
*/
public function testNodeTypeDelete() {
// Create the article content type first if the profile used is not the
// standard one.
if ($this->profile != 'standard') {
$this->drupalCreateContentType(array(
'type' => 'article',
'name' => 'Article'
));
}
$admin_user = $this->drupalCreateUser(array('administer content types'));
$this->drupalLogin($admin_user);
// Create language configuration for the articles.
$edit = array(
'language_configuration[langcode]' => 'authors_default',
'language_configuration[language_alterable]' => TRUE,
);
$this->drupalPostForm('admin/structure/types/manage/article', $edit, t('Save content type'));
// Check the language default configuration for articles is present.
$configuration = \Drupal::entityManager()->getStorage('language_content_settings')->load('node.article');
$this->assertTrue($configuration, 'The language configuration is present.');
// Delete 'article' bundle.
$this->drupalPostForm('admin/structure/types/manage/article/delete', array(), t('Delete'));
// Check that the language configuration has been deleted.
\Drupal::entityManager()->getStorage('language_content_settings')->resetCache();
$configuration = \Drupal::entityManager()->getStorage('language_content_settings')->load('node.article');
$this->assertFalse($configuration, 'The language configuration was deleted after bundle was deleted.');
}
/**
* Tests that the configuration is updated when a vocabulary is changed.
*/