diff --git a/core/modules/field/tests/src/Kernel/DisplayModeUpdateTest.php b/core/modules/field/tests/src/Kernel/DisplayModeUpdateTest.php new file mode 100644 index 0000000000..33b50ceab3 --- /dev/null +++ b/core/modules/field/tests/src/Kernel/DisplayModeUpdateTest.php @@ -0,0 +1,93 @@ + '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', + 'status' => TRUE, + 'enabled' => TRUE, + ])->save(); + + $display = EntityViewDisplay::create([ + 'targetEntityType' => 'entity_test', + 'bundle' => 'entity_test', + 'mode' => 'foobar', + 'status' => TRUE, + ]); + $display->save(); + + // 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', + 'entity_type' => 'entity_test', + 'type' => 'test_field', + 'cardinality' => 1, + ]); + $field_storage->save(); + + FieldConfig::create([ + 'field_storage' => $field_storage, + 'bundle' => 'entity_test', + ])->save(); + + // 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')); + + } + +}