Skip to content

Commit 6347c7a

Browse files
committed
tests: adds tests for discriminator mappings formatting
1 parent fe4a25f commit 6347c7a

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

test/Microsoft.OpenApi.Tests/Models/OpenApiDiscriminatorTests.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright (c) Microsoft Corporation. All rights reserved.
22
// Licensed under the MIT license.
33

4+
using System.Collections.Generic;
45
using System.Text.Json.Nodes;
56
using System.Threading.Tasks;
67
using Xunit;
@@ -34,5 +35,41 @@ public async Task SerializeDefaultMappingAsReferenceString(OpenApiSpecVersion sp
3435
Assert.NotNull(actual);
3536
Assert.Equal("#/components/schemas/Pet", actual[propertyName]?.GetValue<string>());
3637
}
38+
39+
[Theory]
40+
[InlineData(OpenApiSpecVersion.OpenApi3_0)]
41+
[InlineData(OpenApiSpecVersion.OpenApi3_1)]
42+
[InlineData(OpenApiSpecVersion.OpenApi3_2)]
43+
public async Task SerializeMappingValuesAsReferenceStrings(OpenApiSpecVersion specVersion)
44+
{
45+
// Arrange
46+
var document = new OpenApiDocument();
47+
var discriminator = new OpenApiDiscriminator
48+
{
49+
PropertyName = "pet_type",
50+
Mapping = new Dictionary<string, OpenApiSchemaReference>
51+
{
52+
["simple"] = new OpenApiSchemaReference("Pet", document),
53+
["explicit"] = new OpenApiSchemaReference("#/components/schemas/Pet", document),
54+
["noDocument"] = new OpenApiSchemaReference("Pet")
55+
}
56+
};
57+
58+
// Act
59+
var actual = JsonNode.Parse(await discriminator.SerializeAsJsonAsync(specVersion));
60+
61+
// Assert
62+
Assert.NotNull(actual);
63+
var mapping = Assert.IsAssignableFrom<JsonObject>(actual["mapping"]);
64+
AssertMappingValue(mapping, "simple");
65+
AssertMappingValue(mapping, "explicit");
66+
AssertMappingValue(mapping, "noDocument");
67+
}
68+
69+
private static void AssertMappingValue(JsonObject mapping, string key)
70+
{
71+
var value = Assert.IsAssignableFrom<JsonValue>(mapping[key]);
72+
Assert.Equal("#/components/schemas/Pet", value.GetValue<string>());
73+
}
3774
}
3875
}

0 commit comments

Comments
 (0)