Skip to content

Commit

Permalink
microsoft#2488 - CSharp | Add EnumMember Attribute if CodeEnumOption.…
Browse files Browse the repository at this point in the history
…SerializationName is different from CodeEnumOption.Name
  • Loading branch information
davit-asryan-sveasolar committed Mar 30, 2023
1 parent e155222 commit ff542be
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/Kiota.Builder/Writers/CSharp/CodeEnumWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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++;
}
Expand Down
23 changes: 23 additions & 0 deletions tests/Kiota.Builder.Tests/Writers/CSharp/CodeEnumWriterTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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()
{
Expand Down

0 comments on commit ff542be

Please sign in to comment.