File tree Expand file tree Collapse file tree 1 file changed +25
-0
lines changed
test/Swashbuckle.AspNetCore.SwaggerGen.Test/SchemaGenerator Expand file tree Collapse file tree 1 file changed +25
-0
lines changed Original file line number Diff line number Diff line change @@ -483,6 +483,31 @@ public void GenerateSchema_SetsRequiredAndNullable_IfPropertyHasRequiredKeywordA
483483 AssertIsNullable ( schema . Properties [ "RequiredNonNullableString" ] , false ) ;
484484 Assert . Contains ( "RequiredNonNullableString" , schema . Required . ToArray ( ) ) ;
485485 }
486+
487+ [ Fact ]
488+ public void GenerateSchema_NonNullableReferenceTypesAsRequired_PreservesNullable_IfPropertyHasRequiredKeywordAndIsNullable ( )
489+ {
490+ var schemaRepository = new SchemaRepository ( ) ;
491+
492+ var referenceSchema = Subject ( configureGenerator : ( c ) => c . NonNullableReferenceTypesAsRequired = true ) . GenerateSchema ( typeof ( TypeWithNullableReferenceTypes ) , schemaRepository ) ;
493+
494+ var reference = Assert . IsType < OpenApiSchemaReference > ( referenceSchema ) ;
495+
496+ Assert . NotNull ( reference ) ;
497+ Assert . NotNull ( reference . Reference ) ;
498+ Assert . NotNull ( reference . Reference . Id ) ;
499+
500+ var schema = schemaRepository . Schemas [ reference . Reference . Id ] ;
501+ Assert . NotNull ( schema . Properties ) ;
502+
503+ // required string? — must be present (required) AND may be null (nullable: true)
504+ AssertIsNullable ( schema . Properties [ "RequiredNullableString" ] ) ;
505+ Assert . Contains ( "RequiredNullableString" , schema . Required . ToArray ( ) ) ;
506+
507+ // required string — must be present (required) AND must have a value (nullable: false)
508+ AssertIsNullable ( schema . Properties [ "RequiredNonNullableString" ] , false ) ;
509+ Assert . Contains ( "RequiredNonNullableString" , schema . Required . ToArray ( ) ) ;
510+ }
486511#nullable disable
487512
488513 [ Theory ]
You can’t perform that action at this time.
0 commit comments