Skip to content

Commit 540625c

Browse files
committed
Update test cases for DataMember attribute
1 parent 4b37b9e commit 540625c

File tree

5 files changed

+35
-20
lines changed

5 files changed

+35
-20
lines changed

src/Microsoft.Azure.WebJobs.Extensions.OpenApi.Core/Extensions/PropertyInfoExtensions.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Reflection;
22
using System.Runtime.Serialization;
3+
34
using Newtonsoft.Json;
45
using Newtonsoft.Json.Serialization;
56

@@ -39,7 +40,7 @@ public static bool HasDataMemberAttribute(this PropertyInfo element)
3940
/// </summary>
4041
/// <param name="element"><see cref="PropertyInfo"/> instance.</param>
4142
/// <param name="namingStrategy"><see cref="NamingStrategy"/> instance.</param>
42-
/// <returns>Returns the name from <see cref="JsonPropertyAttribute"/> or <see cref="DataMemberAttribute"/> instance.</returns>
43+
/// <returns>Returns the name from <see cref="JsonPropertyAttribute"/> or <see cref="DataMemberAttribute"/> instance. If both <see cref="JsonPropertyAttribute"/> and <see cref="DataMemberAttribute"/> are declared, <see cref="JsonPropertyAttribute"/> takes precedence.</returns>
4344
public static string GetJsonPropertyName(this PropertyInfo element, NamingStrategy namingStrategy = null)
4445
{
4546
if (namingStrategy.IsNullOrDefault())

test-integration/Microsoft.Azure.WebJobs.Extensions.OpenApi.Document.Tests/Get_ApplicationJson_JsonProperty_Tests.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,9 @@ public void Given_OpenApiDocument_Then_It_Should_Return_ComponentSchema(string @
6767
}
6868

6969
[DataTestMethod]
70-
[DataRow("jsonPropertyObjectModel", "object", "memBer1", "string", null)]
70+
[DataRow("jsonPropertyObjectModel", "object", "Member1", "string", null)]
7171
[DataRow("jsonPropertyObjectModel", "object", "MEMBER2", "integer", "int32")]
72-
[DataRow("jsonPropertyObjectModel", "object", "MeMBer3", "string", "date-time")]
73-
[DataRow("jsonPropertyObjectModel", "object", "member4", "boolean", null)]
74-
[DataRow("jsonPropertyObjectModel", "object", "MembeR5", "number", "double")]
72+
[DataRow("jsonPropertyObjectModel", "object", "mEmbER3", "string", "date-time")]
7573
public void Given_OpenApiDocument_Then_It_Should_Return_ComponentSchemaProperty(string @ref, string refType, string propertyName, string propertyType, string propertyFormat)
7674
{
7775
var properties = this._doc["components"]["schemas"][@ref]["properties"];
Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,20 @@
1-
using Newtonsoft.Json;
21
using System;
32
using System.Runtime.Serialization;
43

4+
using Newtonsoft.Json;
5+
56
namespace Microsoft.Azure.WebJobs.Extensions.OpenApi.TestApp.Models
67
{
78
public class JsonPropertyObjectModel
89
{
9-
[DataMember(Name = "memBer1")]
10+
[JsonProperty("Member1")]
1011
public string DataMemberValue1 { get; set; }
1112

1213
[DataMember(Name = "MEMBER2")]
1314
public int DataMemberValue2 { get; set; }
1415

1516
[DataMember(Name = "MeMBer3")]
17+
[JsonProperty("mEmbER3")]
1618
public DateTime DataMemberValue3 { get; set; }
17-
18-
[DataMember(Name = "member4")]
19-
public bool DataMemberValue4 { get; set; }
20-
21-
[DataMember(Name = "MembeR5")]
22-
public double DataMemberValue5 { get; set; }
23-
2419
}
2520
}

test/Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Tests.Fakes/FakeModel.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public class FakeModel
1717
/// <summary>
1818
/// Gets or sets the value 2.
1919
/// </summary>
20-
[JsonProperty("anotherFakeProperty", Required = Required.Always)]
20+
[JsonProperty("anotherJsonFakeProperty", Required = Required.Always)]
2121
public string FakeProperty2 { get; set; }
2222

2323
[JsonProperty(Required = Required.Default)]
@@ -27,7 +27,11 @@ public class FakeModel
2727
public string FakePropertyNoAnnotation { get; set; }
2828

2929
[DataMember(Name = "anotherDataMemberFakeProperty")]
30-
public string DataMemberFakeProperty { get; set; }
30+
public string FakeProperty3 { get; set; }
31+
32+
[DataMember(Name = "dataMemberFakeProperty")]
33+
[JsonProperty("jsonFakeProperty")]
34+
public string FakeProperty4 { get; set; }
3135

3236
public object FakeObject { get; set; }
3337

test/Microsoft.Azure.WebJobs.Extensions.OpenApi.Core.Tests/Extensions/PropertyInfoExtensionsTests.cs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public void Given_Property_When_GetJsonPropertyName_Invoked_Then_It_Should_Retur
3232
public void Given_Property_When_GetJsonPropertyName_Invoked_Then_It_Should_Return_JsonPropertyName()
3333
{
3434
var name = "FakeProperty2";
35-
var jsonPropertyName = "anotherFakeProperty";
35+
var jsonPropertyName = "anotherJsonFakeProperty";
3636
var property = typeof(FakeModel).GetProperty(name, BindingFlags.Public | BindingFlags.Instance);
3737
var namingStrategy = new DefaultNamingStrategy();
3838

@@ -42,16 +42,33 @@ public void Given_Property_When_GetJsonPropertyName_Invoked_Then_It_Should_Retur
4242
}
4343

4444
[TestMethod]
45-
public void Given_Property_When_GetDataMemberName_Invoked_Then_It_Should_Return_DataMemberName()
45+
public void Given_Property_When_GetJsonPropertyName_Invoked_Then_It_Should_Return_DataMemberName()
4646
{
47-
var name = "DataMemberFakeProperty";
48-
var jsonPropertyName = "anotherDataMemberFakeProperty";
47+
var name = "FakeProperty3";
48+
var dataMemberPropertyName = "anotherDataMemberFakeProperty";
49+
50+
var property = typeof(FakeModel).GetProperty(name, BindingFlags.Public | BindingFlags.Instance);
51+
var namingStrategy = new DefaultNamingStrategy();
52+
53+
var result = PropertyInfoExtensions.GetJsonPropertyName(property, namingStrategy);
54+
55+
result.Should().Be(dataMemberPropertyName);
56+
}
57+
58+
[TestMethod]
59+
public void Given_BothProperties_When_GetJsonPropertyName_Invoked_Then_It_Should_Return_JsonPropertyName()
60+
{
61+
var name = "FakeProperty4";
62+
var jsonPropertyName = "jsonFakeProperty";
63+
var dataMemberPropertyName = "dataMemberFakeProperty";
64+
4965
var property = typeof(FakeModel).GetProperty(name, BindingFlags.Public | BindingFlags.Instance);
5066
var namingStrategy = new DefaultNamingStrategy();
5167

5268
var result = PropertyInfoExtensions.GetJsonPropertyName(property, namingStrategy);
5369

5470
result.Should().Be(jsonPropertyName);
71+
result.Should().NotBe(dataMemberPropertyName);
5572
}
5673

5774
[TestMethod]

0 commit comments

Comments
 (0)