diff -u b/core/modules/field/tests/src/Kernel/DisplayModeUpdateTest.php b/core/modules/field/tests/src/Kernel/DisplayModeUpdateTest.php --- b/core/modules/field/tests/src/Kernel/DisplayModeUpdateTest.php +++ b/core/modules/field/tests/src/Kernel/DisplayModeUpdateTest.php @@ -15,13 +15,31 @@ class DisplayModeUpdateTest extends FieldKernelTestBase { /** - * Makes sure that display modes are updated when a field is created. + * Ensure display modes are updated when fields are created or deleted. */ public function testDisplayModeUpdate() { - $config_name = 'core.entity_view_display.entity_test.entity_test.foobar'; + $default_config_name = 'core.entity_view_display.entity_test.entity_test.foobar'; + $foobar_config_name = 'core.entity_view_display.entity_test.entity_test.foobar'; entity_test_create_bundle('entity_test'); + // Create default display. + EntityViewMode::create([ + 'id' => 'entity_test.default', + 'targetEntityType' => 'entity_test', + 'status' => TRUE, + 'enabled' => TRUE, + ])->save(); + + $display = EntityViewDisplay::create([ + 'targetEntityType' => 'entity_test', + 'bundle' => 'entity_test', + 'mode' => 'default', + 'status' => TRUE, + ]); + $display->save(); + + // Create foobar display. EntityViewMode::create([ 'id' => 'entity_test.foobar', 'targetEntityType' => 'entity_test', @@ -36,7 +54,10 @@ 'status' => TRUE, ]); $display->save(); - $this->assertArrayNotHasKey('field_test', \Drupal::config($config_name)->get('hidden')); + + // Sanity test: field has not been created yet, so should not exist in display. + $this->assertArrayNotHasKey('field_test', \Drupal::config($default_config_name)->get('hidden')); + $this->assertArrayNotHasKey('field_test', \Drupal::config($foobar_config_name)->get('hidden')); $field_storage = FieldStorageConfig::create([ 'field_name' => 'field_test', @@ -51,8 +72,21 @@ 'bundle' => 'entity_test', ])->save(); - $display = EntityViewDisplay::load('entity_test.entity_test.foobar'); - $this->assertArrayHasKey('field_test', \Drupal::config($config_name)->get('hidden')); + // Ensure field is added to display modes. + $this->assertArrayHasKey('field_test', \Drupal::config($default_config_name)->get('hidden')); + $this->assertArrayHasKey('field_test', \Drupal::config($foobar_config_name)->get('hidden')); + + $entityFieldManager = \Drupal::service('entity_field.manager'); + + $fields = $entityFieldManager->getFieldDefinitions('entity_test', 'entity_test'); + + if (isset($fields['field_test'])) { + $fields['field_test']->delete(); + } + + // Ensure field is removed from display modes. + $this->assertArrayNotHasKey('field_test', \Drupal::config($default_config_name)->get('hidden')); + $this->assertArrayNotHasKey('field_test', \Drupal::config($foobar_config_name)->get('hidden')); }