Skip to content

Commit 7d7856d

Browse files
committed
tests: adds a unit test to validate empty defaults are serialized
Signed-off-by: Vincent Biret <vibiret@microsoft.com>
1 parent 5fa053a commit 7d7856d

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

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

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,40 @@ public void CloningSchemaWithExamplesAndEnumsShouldSucceed()
315315
Assert.Equivalent(6, clone.Default.GetValue<int>());
316316
}
317317

318+
[Fact]
319+
public void DefaultEmptyCollectionShouldRoundTrip()
320+
{
321+
// Given
322+
var serializedSchema =
323+
"""
324+
{
325+
"type": "array",
326+
"items": {
327+
"type": "string",
328+
"default": []
329+
}
330+
}
331+
""";
332+
using var textWriter = new StringWriter();
333+
var writer = new OpenApiJsonWriter(textWriter);
334+
335+
// When
336+
var schema = OpenApiModelFactory.Parse<OpenApiSchema>(serializedSchema, OpenApiSpecVersion.OpenApi3_1, new(), out _, "json", SettingsFixture.ReaderSettings);
337+
338+
var deserializedArray = Assert.IsType<JsonArray>(schema.Items.Default);
339+
Assert.Empty(deserializedArray);
340+
341+
schema.SerializeAsV31(writer);
342+
var roundTrippedSchema = textWriter.ToString();
343+
344+
// Then
345+
var parsedResult = JsonNode.Parse(roundTrippedSchema);
346+
var parsedExpected = JsonNode.Parse(serializedSchema);
347+
Assert.True(JsonNode.DeepEquals(parsedExpected, parsedResult));
348+
var resultingArray = Assert.IsType<JsonArray>(parsedResult["items"]?["default"]);
349+
Assert.Empty(resultingArray);
350+
}
351+
318352
[Fact]
319353
public async Task SerializeV31SchemaWithMultipleTypesAsV3Works()
320354
{

0 commit comments

Comments
 (0)