Skip to content

Commit 4fa78c5

Browse files
committed
Remove hidden attributes from required params
- Update `required_params` method to skip hidden attributes when determining required parameters. - Modify `response_model_spec` to reflect changes in required attributes, removing `hidden_attr`. - Add a test in `parser_spec` to ensure hidden attributes are not marked as required.
1 parent f1579ed commit 4fa78c5

File tree

3 files changed

+10
-4
lines changed

3 files changed

+10
-4
lines changed

lib/grape-swagger/entity/parser.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,11 @@ def parse_nested(entity_name, entity_options, parent_model = nil)
136136

137137
def required_params(params)
138138
params.each_with_object(Set.new) do |(key, options), accum|
139-
required = if options.fetch(:documentation, {}).key?(:required)
140-
options.dig(:documentation, :required)
139+
documentation = options.fetch(:documentation, {})
140+
next if documentation[:hidden]
141+
142+
required = if documentation.key?(:required)
143+
documentation[:required]
141144
else
142145
!options.key?(:if) && !options.key?(:unless) && options[:expose_nil] != false
143146
end

spec/grape-swagger/entities/response_model_spec.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,7 @@ def app
6767
'code' => { 'type' => 'string', 'description' => 'Error code' },
6868
'message' => { 'type' => 'string', 'description' => 'Error message' },
6969
'attr' => { 'type' => 'string', 'description' => 'Attribute' } },
70-
'required' => %w[text colors hidden_attr created_at kind kind2 kind3 tags relation
71-
attr code message]
70+
'required' => %w[text colors created_at kind kind2 kind3 tags relation attr code message]
7271
)
7372

7473
expect(subject['definitions'].keys).to include 'ThisApi_Entities_Kind'

spec/grape-swagger/entity/parser_spec.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121
expect(properties[:kind3]['$ref']).to eq('#/definitions/Kind')
2222
end
2323

24+
it 'does not mark hidden attributes as required' do
25+
expect(required).not_to include(:hidden_attr)
26+
end
27+
2428
it 'merges attributes that have merge: true defined' do
2529
expect(properties[:merged_attribute]).to be_nil
2630
expect(properties[:code][:type]).to eq('string')

0 commit comments

Comments
 (0)