From 820f029d9a005eca101616d7358c845eb459fe58 Mon Sep 17 00:00:00 2001 From: Fotos Georgiadis Date: Tue, 12 Feb 2019 10:07:31 +0100 Subject: [PATCH 1/2] Fix entity data type identification The gem `grape-swagger` uses the `type` documentation parameter in order to identify the entity name. When the type (class) is stringified `grape-swagger` cannot check for method existance and falls back to taking the last module as the name. --- lib/grape/dsl/inside_route.rb | 2 +- lib/grape/validations/params_scope.rb | 2 +- spec/grape/api_spec.rb | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/grape/dsl/inside_route.rb b/lib/grape/dsl/inside_route.rb index b4672bb97..1638270fe 100644 --- a/lib/grape/dsl/inside_route.rb +++ b/lib/grape/dsl/inside_route.rb @@ -84,7 +84,7 @@ def should_be_empty_array?(declared_param, passed_children_params) end def declared_param_is_array?(declared_param) - route_options_params[declared_param.to_s] && route_options_params[declared_param.to_s][:type] == 'Array' + route_options_params[declared_param.to_s] && route_options_params[declared_param.to_s][:type] <= Array end def route_options_params diff --git a/lib/grape/validations/params_scope.rb b/lib/grape/validations/params_scope.rb index 05c0c8c0a..613fcdf4b 100644 --- a/lib/grape/validations/params_scope.rb +++ b/lib/grape/validations/params_scope.rb @@ -241,7 +241,7 @@ def validates(attrs, validations) coerce_type = infer_coercion(validations) - doc_attrs[:type] = coerce_type.to_s if coerce_type + doc_attrs[:type] = coerce_type if coerce_type desc = validations.delete(:desc) || validations.delete(:description) doc_attrs[:desc] = desc if desc diff --git a/spec/grape/api_spec.rb b/spec/grape/api_spec.rb index 6397dbfc4..c23d25935 100644 --- a/spec/grape/api_spec.rb +++ b/spec/grape/api_spec.rb @@ -2795,10 +2795,10 @@ def static subject.get 'method' expect(subject.routes.map(&:params)).to eq [{ - 'group1' => { required: true, type: 'Array' }, + 'group1' => { required: true, type: Array }, 'group1[param1]' => { required: false, desc: 'group1 param1 desc' }, 'group1[param2]' => { required: true, desc: 'group1 param2 desc' }, - 'group2' => { required: true, type: 'Array' }, + 'group2' => { required: true, type: Array }, 'group2[param1]' => { required: false, desc: 'group2 param1 desc' }, 'group2[param2]' => { required: true, desc: 'group2 param2 desc' } }] @@ -2818,7 +2818,7 @@ def static { description: 'nesting', params: { 'root_param' => { required: true, desc: 'root param' }, - 'nested' => { required: true, type: 'Array' }, + 'nested' => { required: true, type: Array }, 'nested[nested_param]' => { required: true, desc: 'nested param' } } } ] From 20808709fa23e83cce98b66a36f4620aaee5b063 Mon Sep 17 00:00:00 2001 From: Fotos Georgiadis Date: Tue, 12 Feb 2019 18:47:34 +0100 Subject: [PATCH 2/2] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8521e058d..840c59d11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ #### Fixes * Your contribution here. +* [#1863](https://github.com/ruby-grape/grape/pull/1863): Fix entity data type identification - [@fotos](https://github.com/fotos). ### 1.2.3 (2019/01/16)