Skip to content

Commit

Permalink
microsoft#2488 - Add using statement for EnumMember attribute
Browse files Browse the repository at this point in the history
  • Loading branch information
davit-asryan-veritas authored and vadrsa committed Mar 31, 2023
1 parent 9a09218 commit 3ea2c64
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/Kiota.Builder/Refiners/CSharpRefiner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,8 @@ protected static void MakeEnumPropertiesNullable(CodeElement currentElement)
"Microsoft.Kiota.Abstractions.Serialization", "ParseNodeHelper"),
new (static x => x is CodeProperty prop && prop.IsOfKind(CodePropertyKind.Headers),
"Microsoft.Kiota.Abstractions", "RequestHeaders"),
new (static x => x is CodeEnum prop && prop.Options.Any(x => x.IsNameEscaped),
"System.Runtime.Serialization", "EnumMemberAttribute")
};
protected static void CapitalizeNamespacesFirstLetters(CodeElement current)
{
Expand Down
30 changes: 30 additions & 0 deletions tests/Kiota.Builder.Tests/Refiners/CSharpLanguageRefinerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,36 @@ public class CSharpLanguageRefinerTests
private readonly CodeNamespace root = CodeNamespace.InitRootNamespace();
#region CommonLanguageRefinerTests
[Fact]
public async Task EnumHasEscapedOption_UsesEnumMemberAttribute()
{
var model = root.AddEnum(new CodeEnum
{
Name = "someenum"
}).First();
var option = new CodeEnumOption { Name = "kiotaCsharpName", SerializationName = "Kiota:CSharp:Enum" };
model.AddOption(option);
await ILanguageRefiner.Refine(new GenerationConfiguration { Language = GenerationLanguage.CSharp }, root);

var declaration = model.StartBlock;

Assert.Contains("EnumMemberAttribute", declaration.Usings.Select(x => x.Name));
}
[Fact]
public async Task EnumDoesntHaveEscapedOption_DoesntUseEnumMemberAttribute()
{
var model = root.AddEnum(new CodeEnum
{
Name = "someenum"
}).First();
var option = new CodeEnumOption { Name = "item1" };
model.AddOption(option);
await ILanguageRefiner.Refine(new GenerationConfiguration { Language = GenerationLanguage.CSharp }, root);

var declaration = model.StartBlock;

Assert.DoesNotContain("EnumMemberAttribute", declaration.Usings.Select(x => x.Name));
}
[Fact]
public async Task AddsExceptionInheritanceOnErrorClasses()
{
var model = root.AddClass(new CodeClass
Expand Down

0 comments on commit 3ea2c64

Please sign in to comment.