Skip to content

Commit 4baa951

Browse files
Remove child_class completely
1 parent 15054e6 commit 4baa951

File tree

9 files changed

+12
-42
lines changed

9 files changed

+12
-42
lines changed

lib/rspec_api_documentation.rb

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,18 +58,14 @@ module OpenApi
5858
autoload :Info
5959
autoload :Contact
6060
autoload :License
61-
autoload :Paths
6261
autoload :Path
6362
autoload :Tag
6463
autoload :Operation
6564
autoload :Parameter
66-
autoload :Responses
6765
autoload :Response
6866
autoload :Example
69-
autoload :Headers
7067
autoload :Header
7168
autoload :Schema
72-
autoload :SecurityDefinitions
7369
autoload :SecuritySchema
7470
end
7571

lib/rspec_api_documentation/open_api/node.rb

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
11
module RspecApiDocumentation
22
module OpenApi
33
class Node
4-
# this is used to define class of incoming option attribute
5-
# If +false+ then do not create new setting
6-
# If +true+ then create new setting with raw passed value
7-
# If RspecApiDocumentation::OpenApi::Node then create new setting and wrap it in this class
8-
CHILD_CLASS = false
9-
104
# This attribute allow us to hide some of children through configuration file
115
attr_accessor :hide
126

@@ -49,8 +43,6 @@ def initialize(opts = {})
4943
value
5044
end
5145
assign_setting(name, converted)
52-
elsif self.class::CHILD_CLASS
53-
add_setting name, :value => self.class::CHILD_CLASS === true ? value : self.class::CHILD_CLASS.new(value)
5446
else
5547
public_send("#{name}=", value) if respond_to?("#{name}=")
5648
end
@@ -98,7 +90,7 @@ def as_json
9890
tmp = value.select { |v| !v.hide }.map { |v| v.as_json }
9991
hash[name] = tmp unless tmp.empty?
10092
when value.is_a?(Hash) && value.values[0].is_a?(Node)
101-
hash[name] = Hash[value.map { |k, v| [k, v.as_json] }]
93+
hash[name] = Hash[value.select { |k, v| !v.hide }.map { |k, v| [k, v.as_json] }]
10294
else
10395
hash[name] = value
10496
end unless value.nil?

lib/rspec_api_documentation/open_api/operation.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ module OpenApi
33
class Operation < Node
44
add_setting :tags, :default => []
55
add_setting :summary
6-
add_setting :description, :default => ''
6+
add_setting :description
77
add_setting :externalDocs
88
add_setting :operationId
99
add_setting :consumes
1010
add_setting :produces
1111
add_setting :parameters, :default => [], :schema => [Parameter]
12-
add_setting :responses, :required => true, :schema => Responses
12+
add_setting :responses, :required => true, :schema => { String => Response }
1313
add_setting :schemes
1414
add_setting :deprecated, :default => false
1515
add_setting :security

lib/rspec_api_documentation/open_api/response.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module OpenApi
33
class Response < Node
44
add_setting :description, :required => true, :default => 'Successful operation'
55
add_setting :schema, :schema => Schema
6-
add_setting :headers, :schema => { "" => Header }
6+
add_setting :headers, :schema => { String => Header }
77
add_setting :examples
88
end
99
end

lib/rspec_api_documentation/open_api/responses.rb

Lines changed: 0 additions & 9 deletions
This file was deleted.

lib/rspec_api_documentation/open_api/root.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ class Root < Node
88
add_setting :schemes, :default => %w(http https)
99
add_setting :consumes, :default => %w(application/json application/xml)
1010
add_setting :produces, :default => %w(application/json application/xml)
11-
add_setting :paths, :default => {}, :required => true, :schema => { "" => Path }
11+
add_setting :paths, :default => {}, :required => true, :schema => { String => Path }
1212
add_setting :definitions
1313
add_setting :parameters
1414
add_setting :responses
15-
add_setting :securityDefinitions, :schema => SecurityDefinitions
15+
add_setting :securityDefinitions, :schema => { String => SecuritySchema }
1616
add_setting :security
1717
add_setting :tags, :default => [], :schema => [Tag]
1818
add_setting :externalDocs

lib/rspec_api_documentation/open_api/security_definitions.rb

Lines changed: 0 additions & 7 deletions
This file was deleted.

lib/rspec_api_documentation/writers/open_api_writer.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def examples
4848
end
4949

5050
def add_security_definitions!
51-
security_definitions = OpenApi::SecurityDefinitions.new
51+
security_definitions = {}
5252

5353
arr = examples.map do |example|
5454
example.respond_to?(:authentications) ? example.authentications : nil
@@ -62,7 +62,7 @@ def add_security_definitions!
6262
type: opts[:type],
6363
in: opts[:in]
6464
)
65-
security_definitions.add_setting security, :value => schema
65+
security_definitions[security.to_s] = schema
6666
end
6767
end
6868
specs.securityDefinitions = security_definitions unless arr.empty?
@@ -83,14 +83,14 @@ def add_paths!
8383
specs.safe_assign_setting(:paths, {})
8484
examples.each do |example|
8585
route = example.route.to_s
86-
specs.paths[route] = OpenApi::Path.new
86+
specs.paths[route] ||= OpenApi::Path.new
8787

8888
operation = specs.paths[route].setting(example.http_method) || OpenApi::Operation.new
8989

9090
operation.safe_assign_setting(:tags, [example.resource_name])
9191
operation.safe_assign_setting(:summary, example.respond_to?(:route_summary) ? example.route_summary : '')
9292
operation.safe_assign_setting(:description, example.respond_to?(:route_description) ? example.route_description : '')
93-
operation.safe_assign_setting(:responses, OpenApi::Responses.new)
93+
operation.safe_assign_setting(:responses, {})
9494
operation.safe_assign_setting(:parameters, extract_parameters(example))
9595
operation.safe_assign_setting(:consumes, example.requests.map { |request| request[:request_content_type] }.compact.map { |q| q[/[^;]+/] })
9696
operation.safe_assign_setting(:produces, example.requests.map { |request| request[:response_content_type] }.compact.map { |q| q[/[^;]+/] })
@@ -120,9 +120,9 @@ def process_responses(responses, example)
120120
if /\A(?<response_content_type>[^;]+)/ =~ request[:response_content_type]
121121
response.safe_assign_setting(:examples, {})
122122
response_body = JSON.parse(request[:response_body]) rescue nil
123-
response.examples[response_content_type.to_s] = response_body
123+
response.examples[response_content_type.to_s] = response_body if response_body
124124
end
125-
responses.add_setting "#{request[:response_status]}", :value => response
125+
responses[request[:response_status].to_s] = response
126126
end
127127
end
128128

spec/open_api/root_spec.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
describe "default settings" do
1010
class RspecApiDocumentation::OpenApi::Info; end
11-
class RspecApiDocumentation::OpenApi::Paths; end
1211

1312
its(:swagger) { should == '2.0' }
1413
its(:info) { should be_a(RspecApiDocumentation::OpenApi::Info) }
@@ -17,7 +16,6 @@ class RspecApiDocumentation::OpenApi::Paths; end
1716
its(:schemes) { should == %w(http https) }
1817
its(:consumes) { should == %w(application/json application/xml) }
1918
its(:produces) { should == %w(application/json application/xml) }
20-
its(:paths) { should be_a(RspecApiDocumentation::OpenApi::Paths) }
2119
its(:definitions) { should be_nil }
2220
its(:parameters) { should be_nil }
2321
its(:responses) { should be_nil }

0 commit comments

Comments
 (0)