diff --git a/src/Kiota.Builder/Writers/CSharp/CodeEnumWriter.cs b/src/Kiota.Builder/Writers/CSharp/CodeEnumWriter.cs index 7d9e5a0b82..d6e90ef74b 100644 --- a/src/Kiota.Builder/Writers/CSharp/CodeEnumWriter.cs +++ b/src/Kiota.Builder/Writers/CSharp/CodeEnumWriter.cs @@ -27,6 +27,10 @@ public override void WriteCodeElement(CodeEnum codeElement, LanguageWriter write foreach (var option in codeElement.Options) { conventions.WriteShortDescription(option.Documentation.Description, writer); + if (option.IsNameEscaped) + { + writer.WriteLine($"[EnumMember(Value = \"{option.SerializationName}\")]"); + } writer.WriteLine($"{option.Name.ToFirstCharacterUpperCase()}{(codeElement.Flags ? " = " + GetEnumFlag(idx) : string.Empty)},"); idx++; } diff --git a/tests/Kiota.Builder.Tests/Writers/CSharp/CodeEnumWriterTests.cs b/tests/Kiota.Builder.Tests/Writers/CSharp/CodeEnumWriterTests.cs index 1fd462a11c..5729f4c3ec 100644 --- a/tests/Kiota.Builder.Tests/Writers/CSharp/CodeEnumWriterTests.cs +++ b/tests/Kiota.Builder.Tests/Writers/CSharp/CodeEnumWriterTests.cs @@ -46,6 +46,29 @@ public void WritesEnum() AssertExtensions.CurlyBracesAreClosed(result, 1); Assert.Contains(Option.Name, result); } + + [Fact] + public void NamesDiffer_WritesEnumMember() + { + currentEnum.Flags = true; + currentEnum.AddOption(Option); + currentEnum.AddOption(new CodeEnumOption { Name = "InvalidName", SerializationName = "Invalid:Name"}); + writer.Write(currentEnum); + var result = tw.ToString(); + Assert.Contains($"[EnumMember(Value = \"Invalid:Name\")]", result); + } + + [Fact] + public void NamesDontDiffer_DoesntWriteEnumMember() + { + currentEnum.Flags = true; + currentEnum.AddOption(Option); + currentEnum.AddOption(new CodeEnumOption { Name = "ValidName"}); + writer.Write(currentEnum); + var result = tw.ToString(); + Assert.DoesNotContain($"\"ValidName\"", result); + } + [Fact] public void WritesFlagsEnum() {