Skip to content

Commit f7dbe74

Browse files
committed
chore: adds unit test for properties references
Signed-off-by: Vincent Biret <[email protected]>
1 parent ec9c01b commit f7dbe74

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiSchemaTests.cs

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
using System.Text.Json.Nodes;
1212
using System.Collections.Generic;
1313
using FluentAssertions.Equivalency;
14+
using Microsoft.OpenApi.Models.References;
15+
using Microsoft.OpenApi.Writers;
1416

1517
namespace Microsoft.OpenApi.Readers.Tests.V2Tests
1618
{
@@ -95,5 +97,56 @@ public void ParseSchemaWithEnumShouldSucceed()
9597
.Excluding((IMemberInfo memberInfo) =>
9698
memberInfo.Path.EndsWith("Parent")));
9799
}
100+
[Fact]
101+
public void PropertiesReferenceShouldWork()
102+
{
103+
var workingDocument = new OpenApiDocument()
104+
{
105+
Components = new OpenApiComponents(),
106+
};
107+
const string referenceId = "targetSchema";
108+
var targetSchema = new OpenApiSchema()
109+
{
110+
Type = JsonSchemaType.Object,
111+
Properties = new Dictionary<string, OpenApiSchema>
112+
{
113+
["prop1"] = new OpenApiSchema()
114+
{
115+
Type = JsonSchemaType.String
116+
}
117+
}
118+
};
119+
workingDocument.Components.Schemas.Add(referenceId, targetSchema);
120+
workingDocument.Workspace.RegisterComponent("schemas", targetSchema);
121+
var referenceSchema = new OpenApiSchema()
122+
{
123+
Type = JsonSchemaType.Object,
124+
Properties = new Dictionary<string, OpenApiSchema>
125+
{
126+
["propA"] = new OpenApiSchemaReference(referenceId, workingDocument),
127+
}
128+
};
129+
130+
using var textWriter = new StringWriter();
131+
var writer = new OpenApiJsonWriter(textWriter);
132+
referenceSchema.SerializeAsV2(writer);
133+
134+
var json = textWriter.ToString();
135+
var expected = JsonNode.Parse(
136+
"""
137+
{
138+
"type": "object",
139+
"properties":
140+
{
141+
"propA":
142+
{
143+
"$ref": "#/definitions/targetSchema"
144+
}
145+
}
146+
}
147+
"""
148+
);
149+
Assert.True(JsonNode.DeepEquals(JsonNode.Parse(json), expected));
150+
}
98151
}
99152
}

0 commit comments

Comments
 (0)