@@ -422,5 +422,68 @@ public async Task SerializeSchemaWRequiredPropertiesAsV2JsonWorksAsync(bool prod
422422 // Assert
423423 await Verifier . Verify ( actual ) . UseParameters ( produceTerseOutput ) ;
424424 }
425+
426+ [ Fact ]
427+ public void SerializeSchemaPrimitiveTypeShouldRemoveFormatInRootIfPresentInChildrenSchema ( )
428+ {
429+ // Arrange
430+ var schema = new OpenApiSchema ( )
431+ {
432+ OneOf = new List < OpenApiSchema >
433+ {
434+ new OpenApiSchema
435+ {
436+ Type = "number" ,
437+ Format = "decimal"
438+ } ,
439+ new OpenApiSchema { Type = "string" } ,
440+ }
441+ } ;
442+
443+ var outputStringWriter = new StringWriter ( CultureInfo . InvariantCulture ) ;
444+ var openApiJsonWriter = new OpenApiJsonWriter ( outputStringWriter , new OpenApiJsonWriterSettings { Terse = false } ) ;
445+
446+ // Act
447+ // Serialize as V2
448+ schema . SerializeAsV2 ( openApiJsonWriter ) ;
449+ openApiJsonWriter . Flush ( ) ;
450+
451+ var v2Schema = outputStringWriter . GetStringBuilder ( ) . ToString ( ) ; //.Replace(Environment.NewLine, "").Replace(" ", "").Replace("\n","");
452+
453+ // Serialize as V3
454+ //schema.SerializeAsV3(openApiJsonWriter);
455+ //openApiJsonWriter.Flush();
456+
457+ //var v3Schema = outputStringWriter.GetStringBuilder().ToString();//.Replace(Environment.NewLine, "").Replace(" ", "").Replace("\n", "");
458+
459+ var expectedV2Schema = @"{
460+ ""allOf"": [
461+ {
462+ ""format"": ""decimal"",
463+ ""type"": ""number""
464+ }],
465+ ""format"": ""decimal""
466+ }" . Replace ( Environment . NewLine , "" ) . Replace ( " " , "" ) . Replace ( "\n " , "" ) ;
467+
468+
469+ var expectedV3Schema = @"{
470+ ""allOf"": [
471+ {
472+ ""format"": ""decimal"",
473+ ""type"": ""number""
474+ }]}
475+ {""oneOf"": [
476+ {
477+ ""type"": ""number"",
478+ ""format"": ""decimal""
479+ },
480+ {""type"" : ""string""}
481+
482+ ]}}" ; //.Replace(Environment.NewLine, "").Replace(" ", "").Replace("\n", "");
483+
484+ // Assert
485+ Assert . Equal ( expectedV2Schema , v2Schema ) ; // Assert that v2 schema has the root schema Format defined
486+ //Assert.Equal(expectedV3Schema, v3Schema);
487+ }
425488 }
426489}
0 commit comments