Skip to content

Commit

Permalink
Merge pull request #2493 from vadrsa/csharp-enum-member-attribute
Browse files Browse the repository at this point in the history
#2488 - CSharp | Add EnumMember Attribute if CodeEnumOption.Serializa…
  • Loading branch information
baywet authored Mar 30, 2023
2 parents e155222 + bf10976 commit 9a09218
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fixed a bug where java refiner would not normalize inherited class names and interface types.
- Fixed a bug where search based commands would not match exact matches when additional results are available.
- Fixed a bug where imported classes and enums would not be disambiguated when they have the same name in dotnet.
- Fixed a bug where escaping enum names resulted in a loss of the original enum name. [#2488](https://github.com/microsoft/kiota/issues/2488)

## [1.0.1] - 2023-03-11

Expand Down
5 changes: 5 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,11 @@ 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 9a09218

Please sign in to comment.