diff --git a/src/HotChocolate/Core/src/Types/Types/EnumTypeExtension.cs b/src/HotChocolate/Core/src/Types/Types/EnumTypeExtension.cs index 5d542a10f37..3eeb0c39636 100644 --- a/src/HotChocolate/Core/src/Types/Types/EnumTypeExtension.cs +++ b/src/HotChocolate/Core/src/Types/Types/EnumTypeExtension.cs @@ -139,9 +139,22 @@ private void MergeValues( } else { + existingValue.Name = enumValue.Name; + + if (enumValue.Description is not null) + { + existingValue.Description = enumValue.Description; + } + + if (enumValue.IsDeprecated) + { + existingValue.DeprecationReason = enumValue.DeprecationReason; + } + existingValue.Ignore = enumValue.Ignore; TypeExtensionHelper.MergeFeatures(enumValue, existingValue); + TypeExtensionHelper.MergeConfigurations(enumValue.Tasks, existingValue.Tasks); TypeExtensionHelper.MergeDirectives( context, diff --git a/src/HotChocolate/Core/test/Types.Tests/Types/EnumTypeExtensionTests.cs b/src/HotChocolate/Core/test/Types.Tests/Types/EnumTypeExtensionTests.cs index a99232e99eb..3b1b9eb7666 100644 --- a/src/HotChocolate/Core/test/Types.Tests/Types/EnumTypeExtensionTests.cs +++ b/src/HotChocolate/Core/test/Types.Tests/Types/EnumTypeExtensionTests.cs @@ -133,6 +133,22 @@ public void EnumTypeExtension_Ignore_Fields() schema.ToString().MatchSnapshot(); } + [Fact] + public void EnumTypeExtension_Rename_Value() + { + // act + var schema = SchemaBuilder.New() + .AddQueryType() + .AddType() + .AddType() + .Create(); + + // assert + var type = schema.Types.GetType("Foo"); + Assert.True(type.TryGetRuntimeValue("TEST", out _)); + Assert.False(type.TryGetRuntimeValue("BAR", out _)); + } + public class DummyQuery { public required string Foo { get; set; } @@ -169,6 +185,16 @@ protected override void Configure(IEnumTypeDescriptor descriptor) } } + public class FooRenameTypeExtension + : EnumTypeExtension + { + protected override void Configure(IEnumTypeDescriptor descriptor) + { + descriptor.Name("Foo"); + descriptor.Value(Foo.Bar).Name("TEST"); + } + } + public enum Foo { Bar,