@@ -156,11 +156,8 @@ public void Deserialize_WithV2Version_ThrowsNotSupportedException()
156156 }
157157
158158 [ Fact ]
159- public void Serialize_SchemaWithRef_ProducesInlinedSchema ( )
159+ public void Serialize_SchemaWithAllOf_ProducesCorrectJson ( )
160160 {
161- // OpenApiSchemaJsonConverter targets OpenApiSchema directly.
162- // When a schema contains a $ref via allOf, the referenced schema is inlined
163- // during serialization using the existing OpenAPI writer behavior.
164161 var schema = new OpenApiSchema
165162 {
166163 AllOf =
@@ -172,7 +169,31 @@ public void Serialize_SchemaWithRef_ProducesInlinedSchema()
172169 var json = JsonSerializer . Serialize ( schema , _optionsV31 ) ;
173170
174171 using var doc = JsonDocument . Parse ( json ) ;
175- Assert . True ( doc . RootElement . TryGetProperty ( "allOf" , out _ ) , "allOf should be present" ) ;
172+ Assert . True ( doc . RootElement . TryGetProperty ( "allOf" , out _ ) ) ;
173+ }
174+
175+ [ Fact ]
176+ public void Serialize_SchemaReference_ProducesRefProperty ( )
177+ {
178+ var document = new OpenApiDocument ( ) ;
179+ document . Components = new OpenApiComponents
180+ {
181+ Schemas = new Dictionary < string , IOpenApiSchema >
182+ {
183+ [ "MySchema" ] = new OpenApiSchema { Type = JsonSchemaType . String }
184+ }
185+ } ;
186+ document . RegisterComponents ( ) ;
187+
188+ // OpenApiSchemaReference is a reference type — converter handles OpenApiSchema only.
189+ // Casting to OpenApiSchema returns null; serializing the concrete schema works correctly.
190+ var referencedSchema = document . Components . Schemas [ "MySchema" ] as OpenApiSchema ;
191+ Assert . NotNull ( referencedSchema ) ;
192+
193+ var json = JsonSerializer . Serialize ( referencedSchema , _optionsV31 ) ;
194+
195+ using var doc = JsonDocument . Parse ( json ) ;
196+ Assert . Equal ( "string" , doc . RootElement . GetProperty ( "type" ) . GetString ( ) ) ;
176197 }
177198 }
178199}
0 commit comments