Skip to content

Commit f889937

Browse files
authored
Merge pull request #2128 from microsoft/fix/item-properties-types
fix: do not write null for types on parameters in v2
2 parents 3c5f8ab + 4aef7b7 commit f889937

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

src/Microsoft.OpenApi/Models/OpenApiSchema.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,7 @@ internal void WriteJsonSchemaKeywords(IOpenApiWriter writer)
413413
internal void WriteAsItemsProperties(IOpenApiWriter writer)
414414
{
415415
// type
416-
writer.WriteProperty(OpenApiConstants.Type, Type.ToIdentifier());
416+
writer.WriteProperty(OpenApiConstants.Type, (Type & ~JsonSchemaType.Null).ToIdentifier());
417417

418418
// format
419419
WriteFormatProperty(writer);

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

+30
Original file line numberDiff line numberDiff line change
@@ -624,6 +624,36 @@ public async Task SerializeSchemaWithUnrecognizedPropertiesWorks()
624624
Assert.Equal(expected.MakeLineBreaksEnvironmentNeutral(), actual.MakeLineBreaksEnvironmentNeutral());
625625
}
626626

627+
[Fact]
628+
public async Task WriteAsItemsPropertiesDoesNotWriteNull()
629+
{
630+
// Arrange
631+
var schema = new OpenApiSchema
632+
{
633+
Type = JsonSchemaType.Number | JsonSchemaType.Null
634+
};
635+
636+
var outputStringWriter = new StringWriter(CultureInfo.InvariantCulture);
637+
var writer = new OpenApiJsonWriter(outputStringWriter, new() { Terse = false });
638+
writer.WriteStartObject();
639+
640+
// Act
641+
schema.WriteAsItemsProperties(writer);
642+
writer.WriteEndObject();
643+
await writer.FlushAsync();
644+
645+
// Assert
646+
var actual = outputStringWriter.GetStringBuilder().ToString();
647+
var expected =
648+
"""
649+
{
650+
"type": "number"
651+
}
652+
""";
653+
Assert.True(JsonNode.DeepEquals(JsonNode.Parse(expected), JsonNode.Parse(actual)));
654+
}
655+
656+
627657
internal class SchemaVisitor : OpenApiVisitorBase
628658
{
629659
public List<string> Titles = new();

0 commit comments

Comments
 (0)