@@ -422,5 +422,68 @@ public async Task SerializeSchemaWRequiredPropertiesAsV2JsonWorksAsync(bool prod
422
422
// Assert
423
423
await Verifier . Verify ( actual ) . UseParameters ( produceTerseOutput ) ;
424
424
}
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
+ }
425
488
}
426
489
}
0 commit comments