diff --git a/lib/swagger/docs/generator.rb b/lib/swagger/docs/generator.rb index 1cb5bda..9ebda54 100644 --- a/lib/swagger/docs/generator.rb +++ b/lib/swagger/docs/generator.rb @@ -209,9 +209,9 @@ def get_klass_models(klass) klass.swagger_models.each do |model_name, model| formatted_model = { id: model[:id], - required: model[:required], properties: model[:properties], } + formatted_model[:required] = model[:required] if model[:required] formatted_model[:description] = model[:description] if model[:description] models[model[:id]] = formatted_model end diff --git a/spec/fixtures/controllers/sample_controller.rb b/spec/fixtures/controllers/sample_controller.rb index fe994f8..f1b9981 100644 --- a/spec/fixtures/controllers/sample_controller.rb +++ b/spec/fixtures/controllers/sample_controller.rb @@ -76,6 +76,11 @@ class SampleController < SuperclassController property :name, :string, :optional, "Name", foo: "test" property_list :type, :string, :optional, "Type", ["info", "warning", "error"] end + + swagger_model :OptionalTag do + description "A Tag object with no required property." + property :name, :string, :optional, "Name", foo: "test" + end end end end diff --git a/spec/lib/swagger/docs/generator_spec.rb b/spec/lib/swagger/docs/generator_spec.rb index c143737..6afb859 100644 --- a/spec/lib/swagger/docs/generator_spec.rb +++ b/spec/lib/swagger/docs/generator_spec.rb @@ -435,7 +435,12 @@ } expect(models['Tag']).to eq expected_model end + + it "should not have required field when no property is required" do + expect(models['OptionalTag'].has_key?('required')).to eq false + end end + context "custom resource_path resource file" do let(:resource) { file_resource_custom_resource_path.read } let(:response) { JSON.parse(resource) }