Issue #2580319 by Arla: Field configs should adjust third party settings when dependencies are removed

8.0.x
Alex Pott 2015-10-16 18:49:47 +01:00
parent e900ded48f
commit af8fc7c8c7
2 changed files with 36 additions and 1 deletions

View File

@ -251,9 +251,12 @@ abstract class FieldConfigBase extends ConfigEntityBase implements FieldConfigIn
* {@inheritdoc}
*/
public function onDependencyRemoval(array $dependencies) {
$changed = parent::onDependencyRemoval($dependencies);
$field_type_manager = \Drupal::service('plugin.manager.field.field_type');
$definition = $field_type_manager->getDefinition($this->getType());
$changed = $definition['class']::onDependencyRemoval($this, $dependencies);
if ($definition['class']::onDependencyRemoval($this, $dependencies)) {
$changed = TRUE;
}
return $changed;
}

View File

@ -212,6 +212,35 @@ class FieldConfigEntityUnitTest extends UnitTestCase {
$field->calculateDependencies();
}
/**
* @covers ::onDependencyRemoval
*/
public function testOnDependencyRemoval() {
$this->fieldTypePluginManager->expects($this->any())
->method('getDefinition')
->with('test_field')
->willReturn(['class' => '\Drupal\Tests\field\Unit\DependencyFieldItem']);
$field = new FieldConfig([
'field_name' => $this->fieldStorage->getName(),
'entity_type' => 'test_entity_type',
'bundle' => 'test_bundle',
'field_type' => 'test_field',
'dependencies' => [
'module' => [
'fruiter',
]
],
'third_party_settings' => [
'fruiter' => [
'fruit' => 'apple',
]
]
]);
$changed = $field->onDependencyRemoval(['module' => ['fruiter']]);
$this->assertTrue($changed);
}
/**
* @covers ::toArray
*/
@ -290,4 +319,7 @@ class DependencyFieldItem {
return ['module' => ['test_module3']];
}
public static function onDependencyRemoval($field_config, $dependencies) {
}
}