From af8fc7c8c720b147b3015bb10002da9a3323a756 Mon Sep 17 00:00:00 2001 From: Alex Pott Date: Fri, 16 Oct 2015 18:49:47 +0100 Subject: [PATCH] Issue #2580319 by Arla: Field configs should adjust third party settings when dependencies are removed --- .../lib/Drupal/Core/Field/FieldConfigBase.php | 5 ++- .../src/Unit/FieldConfigEntityUnitTest.php | 32 +++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/core/lib/Drupal/Core/Field/FieldConfigBase.php b/core/lib/Drupal/Core/Field/FieldConfigBase.php index 87a5c91c2c20..c7b98fd08f5d 100644 --- a/core/lib/Drupal/Core/Field/FieldConfigBase.php +++ b/core/lib/Drupal/Core/Field/FieldConfigBase.php @@ -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; } diff --git a/core/modules/field/tests/src/Unit/FieldConfigEntityUnitTest.php b/core/modules/field/tests/src/Unit/FieldConfigEntityUnitTest.php index e7e2a2dc646f..2ac2692cc155 100644 --- a/core/modules/field/tests/src/Unit/FieldConfigEntityUnitTest.php +++ b/core/modules/field/tests/src/Unit/FieldConfigEntityUnitTest.php @@ -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) { + } + }