@@ -257,6 +257,29 @@ def view_func(request, format=None):
257
257
}
258
258
259
259
260
+ @mock .patch ('drf_spectacular.settings.spectacular_settings.OAS_VERSION' , '3.1.0' )
261
+ def test_extend_schema_field_with_schema_as_oas_3_1 (no_warnings ):
262
+ @extend_schema_field ({'type' : ['string' , 'integer' ]})
263
+ class CustomField (serializers .CharField ):
264
+ pass
265
+
266
+ class XSerializer (serializers .Serializer ):
267
+ field1 = CustomField (read_only = True , allow_null = True )
268
+ field2 = CustomField (read_only = True , allow_null = True )
269
+
270
+ @extend_schema (request = XSerializer , responses = XSerializer )
271
+ @api_view (['POST' ])
272
+ def view_func (request , format = None ):
273
+ pass # pragma: no cover
274
+
275
+ schema = generate_schema ('x' , view_function = view_func )
276
+
277
+ assert schema ['components' ]['schemas' ]['X' ]['properties' ] == {
278
+ 'field1' : {'readOnly' : True , 'type' : ['string' , 'integer' , 'null' ]},
279
+ 'field2' : {'readOnly' : True , 'type' : ['string' , 'integer' , 'null' ]},
280
+ }
281
+
282
+
260
283
def test_layered_extend_schema_on_view_and_method_with_meta (no_warnings ):
261
284
class XSerializer (serializers .Serializer ):
262
285
field = serializers .IntegerField ()
0 commit comments