Skip to content

Commit

Permalink
Set the proper JSON schema type for HStoreFields in OpenAPI schemas (e…
Browse files Browse the repository at this point in the history
  • Loading branch information
Lucidiot authored and Pierre Chiquet committed Mar 24, 2020
1 parent 2a200c5 commit 2178dc9
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 0 deletions.
1 change: 1 addition & 0 deletions rest_framework/schemas/openapi.py
Expand Up @@ -344,6 +344,7 @@ def _map_field(self, field):
serializers.BooleanField: 'boolean',
serializers.JSONField: 'object',
serializers.DictField: 'object',
serializers.HStoreField: 'object',
}
return {'type': FIELD_CLASS_SCHEMA_TYPE.get(field.__class__, 'string')}

Expand Down
16 changes: 16 additions & 0 deletions tests/schemas/test_openapi.py
Expand Up @@ -462,6 +462,22 @@ def test_serializer_datefield(self):
assert properties['date']['format'] == 'date'
assert properties['datetime']['format'] == 'date-time'

def test_serializer_hstorefield(self):
path = '/'
method = 'GET'
view = create_view(
views.ExampleGenericAPIView,
method,
create_request(path),
)
inspector = AutoSchema()
inspector.view = view

responses = inspector._get_responses(path, method)
response_schema = responses['200']['content']['application/json']['schema']
properties = response_schema['items']['properties']
assert properties['hstore']['type'] == 'object'

def test_serializer_validators(self):
path = '/'
method = 'GET'
Expand Down
1 change: 1 addition & 0 deletions tests/schemas/views.py
Expand Up @@ -33,6 +33,7 @@ def get(self, *args, **kwargs):
class ExampleSerializer(serializers.Serializer):
date = serializers.DateField()
datetime = serializers.DateTimeField()
hstore = serializers.HStoreField()


class ExampleGenericAPIView(generics.GenericAPIView):
Expand Down

0 comments on commit 2178dc9

Please sign in to comment.