Skip to content

Commit e3e7a45

Browse files
committed
if no data example by default depends on type
1 parent 67783a3 commit e3e7a45

3 files changed

Lines changed: 17 additions & 15 deletions

File tree

lib/open_api_import.rb

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -388,15 +388,17 @@ def self.from(swagger_file, create_method_name: :operation_id, include_responses
388388
end
389389
end
390390

391-
if dpv.key?(:type) and dpv[:type].downcase == "string"
392-
valv = '"' + valv + '"'
391+
#todo: consider check default and insert it
392+
if dpv.key?(:type)
393+
params_data << get_examples({dpk => dpv}, :only_value, true).join
394+
params_data[-1].chop!.chop! if params_data[-1].to_s[-2..-1]==', '
395+
params_data.pop if params_data[-1].match?(/^\s*$/im)
393396
else
394-
#todo: consider check default and insert it
395397
if valv.to_s == ""
396398
valv = '"' + valv + '"'
397399
end
400+
params_data << "#{dpk}: #{valv}"
398401
end
399-
params_data << "#{dpk}: #{valv}"
400402
}
401403

402404
if params_data.size > 0
@@ -730,14 +732,14 @@ class << self
730732
else
731733
#todo: differ between response examples and data examples
732734
if type == :only_value
733-
example << get_response_examples({schema: val}).join("\n")
735+
example << get_response_examples({schema: val}, remove_readonly).join("\n")
734736
else
735-
example << " #{prop.to_sym}: " + get_response_examples({schema: val}).join("\n") + ", "
737+
example << " #{prop.to_sym}: " + get_response_examples({schema: val}, remove_readonly).join("\n") + ", "
736738
end
737739
end
738740
when "object"
739741
#todo: differ between response examples and data examples
740-
res_ex = get_response_examples({schema: val})
742+
res_ex = get_response_examples({schema: val}, remove_readonly)
741743
if res_ex.size == 0
742744
res_ex = "{ }"
743745
else
@@ -755,7 +757,7 @@ class << self
755757
end
756758

757759
# Retrieve the response examples from the hash
758-
private def get_response_examples(v)
760+
private def get_response_examples(v, remove_readonly = false)
759761
# TODO: take in consideration the case allOf, oneOf... schema.items.allOf[0].properties schema.items.allOf[1].properties
760762
# example on https://github.com/OAI/OpenAPI-Specification/blob/master/examples/v2.0/yaml/petstore-expanded.yaml
761763
v=v.dup
@@ -765,7 +767,6 @@ class << self
765767
v[:content][:'application/json'].key?(:schema)
766768
v=v[:content][:'application/json'].dup
767769
end
768-
769770
if v.key?(:examples) && v[:examples].is_a?(Hash) && v[:examples].key?(:'application/json')
770771
if v[:examples][:'application/json'].is_a?(String)
771772
response_example << v[:examples][:'application/json']
@@ -817,9 +818,9 @@ class << self
817818
end
818819
elsif v.key?(:schema) && v[:schema].is_a?(Hash) &&
819820
(v[:schema].key?(:properties) ||
820-
(v[:schema].key?(:items) && v[:schema][:items].key?(:properties)) ||
821-
(v[:schema].key?(:items) && v[:schema][:items].key?(:allOf)) ||
822-
v[:schema].key?(:allOf))
821+
(v[:schema].key?(:items) && v[:schema][:items].key?(:properties)) ||
822+
(v[:schema].key?(:items) && v[:schema][:items].key?(:allOf)) ||
823+
v[:schema].key?(:allOf))
823824
properties = {}
824825
if v[:schema].key?(:properties)
825826
properties = v[:schema][:properties]
@@ -837,7 +838,7 @@ class << self
837838
response_example << "["
838839
end
839840

840-
response_example += get_examples(properties) unless properties.empty?
841+
response_example += get_examples(properties, :key_value, remove_readonly) unless properties.empty?
841842

842843
unless response_example.empty?
843844
if v[:schema].key?(:properties) || v[:schema].key?(:allOf)

open_api_import.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Gem::Specification.new do |s|
22
s.name = 'open_api_import'
3-
s.version = '0.10.4'
3+
s.version = '0.10.5'
44
s.summary = "OpenApiImport -- Import a Swagger or Open API file and create a Ruby Request Hash file including all requests and responses with all the examples. The file can be in JSON or YAML"
55
s.description = "OpenApiImport -- Import a Swagger or Open API file and create a Ruby Request Hash file including all requests and responses with all the examples. The file can be in JSON or YAML"
66
s.authors = ["Mario Ruiz"]

spec/open_api_import/open_api_import_data_examples_spec.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
require 'open_api_import'
22

3+
#todo: add test for data_examples to include values according to type in case no examples supplied, fex: doo: 0 instead of doo: "" if type is intenger
34
RSpec.describe OpenApiImport do
45

56
describe '#from' do
@@ -14,7 +15,7 @@
1415
req = Swagger::SwaggerPetstore::V1_0_0::Root.add_pet()
1516
expect(req.key?(:data_examples)).to eq true
1617
expect(req[:data_examples].class).to eq Array
17-
expect(req[:data_examples]).to eq ([{name: "", tag: ""}])
18+
expect(req[:data_examples]).to eq ([{name: "string", tag: "string"}])
1819
end
1920
end
2021
end

0 commit comments

Comments
 (0)