Skip to content

Commit

Permalink
fix: do not write null for types on parameters in v2
Browse files Browse the repository at this point in the history
  • Loading branch information
baywet committed Feb 5, 2025
1 parent 3c5f8ab commit 4aef7b7
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/Microsoft.OpenApi/Models/OpenApiSchema.cs
Original file line number Diff line number Diff line change
Expand Up @@ -413,7 +413,7 @@ internal void WriteJsonSchemaKeywords(IOpenApiWriter writer)
internal void WriteAsItemsProperties(IOpenApiWriter writer)
{
// type
writer.WriteProperty(OpenApiConstants.Type, Type.ToIdentifier());
writer.WriteProperty(OpenApiConstants.Type, (Type & ~JsonSchemaType.Null).ToIdentifier());

// format
WriteFormatProperty(writer);
Expand Down
30 changes: 30 additions & 0 deletions test/Microsoft.OpenApi.Tests/Models/OpenApiSchemaTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -624,6 +624,36 @@ public async Task SerializeSchemaWithUnrecognizedPropertiesWorks()
Assert.Equal(expected.MakeLineBreaksEnvironmentNeutral(), actual.MakeLineBreaksEnvironmentNeutral());
}

[Fact]
public async Task WriteAsItemsPropertiesDoesNotWriteNull()
{
// Arrange
var schema = new OpenApiSchema
{
Type = JsonSchemaType.Number | JsonSchemaType.Null
};

var outputStringWriter = new StringWriter(CultureInfo.InvariantCulture);
var writer = new OpenApiJsonWriter(outputStringWriter, new() { Terse = false });
writer.WriteStartObject();

// Act
schema.WriteAsItemsProperties(writer);
writer.WriteEndObject();
await writer.FlushAsync();

// Assert
var actual = outputStringWriter.GetStringBuilder().ToString();
var expected =
"""
{
"type": "number"
}
""";
Assert.True(JsonNode.DeepEquals(JsonNode.Parse(expected), JsonNode.Parse(actual)));
}


internal class SchemaVisitor : OpenApiVisitorBase
{
public List<string> Titles = new();
Expand Down

0 comments on commit 4aef7b7

Please sign in to comment.