swagger_docs_generator 0.2.0 → 0.3.0.pre.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/swagger_docs_generator/configuration/configuration.rb +14 -5
- data/lib/swagger_docs_generator/configuration/configuration_info.rb +4 -0
- data/lib/swagger_docs_generator/generator.rb +30 -47
- data/lib/swagger_docs_generator/info.rb +1 -1
- data/lib/swagger_docs_generator/metadata/controller.rb +3 -31
- data/lib/swagger_docs_generator/metadata/definition.rb +19 -10
- data/lib/swagger_docs_generator/metadata/jsons.rb +32 -0
- data/lib/swagger_docs_generator/metadata/metadata.rb +11 -1
- data/lib/swagger_docs_generator/parser/action.rb +15 -7
- data/lib/swagger_docs_generator/parser/actions/parameters/body.rb +31 -0
- data/lib/swagger_docs_generator/parser/actions/parameters/form.rb +20 -0
- data/lib/swagger_docs_generator/parser/actions/parameters/header.rb +27 -0
- data/lib/swagger_docs_generator/parser/actions/parameters/path.rb +27 -0
- data/lib/swagger_docs_generator/parser/actions/parameters/query.rb +28 -0
- data/lib/swagger_docs_generator/parser/actions/parameters.rb +31 -57
- data/lib/swagger_docs_generator/parser/actions/response.rb +3 -59
- data/lib/swagger_docs_generator/parser/actions/schema.rb +4 -0
- data/lib/swagger_docs_generator/parser/controller.rb +7 -7
- data/lib/swagger_docs_generator/parser/definition.rb +9 -7
- data/lib/swagger_docs_generator/parser/model.rb +0 -3
- data/lib/swagger_docs_generator/parser/parser.rb +12 -11
- data/lib/swagger_docs_generator.rb +6 -0
- data/lib/tasks/swagger.rake +6 -5
- data/spec/spec_helper.rb +1 -0
- data/spec/support/examples/parameters.rb +154 -0
- data/spec/swagger_docs_generator/configuration/configuration_customize_spec.rb +6 -6
- data/spec/swagger_docs_generator/configuration/configuration_default_spec.rb +8 -3
- data/spec/swagger_docs_generator/parser/parameters/param_body_spec.rb +62 -0
- data/spec/swagger_docs_generator/parser/parameters/param_form_spec.rb +52 -0
- data/spec/swagger_docs_generator/parser/parameters/param_header_spec.rb +62 -0
- data/spec/swagger_docs_generator/parser/parameters/param_path_spec.rb +62 -0
- data/spec/swagger_docs_generator/parser/parameters/param_query_spec.rb +62 -0
- metadata +18 -9
- data/lib/swagger_docs_generator/metadata/path.rb +0 -24
- data/lib/swagger_docs_generator/metadata/tag.rb +0 -24
- data/spec/swagger_docs_generator/metadata/controller_spec.rb +0 -18
- /data/lib/swagger_docs_generator/{parser/models → models}/active_record.rb +0 -0
- /data/lib/swagger_docs_generator/{parser/models → models}/mongo.rb +0 -0
@@ -1,6 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# :reek:UtilityFunction
|
4
|
+
# :reek:InstanceVariableAssumption
|
5
|
+
# :reek:TooManyStatements
|
6
|
+
# :reek:TooManyInstanceVariables
|
4
7
|
|
5
8
|
module SwaggerDocsGenerator
|
6
9
|
module Actions
|
@@ -50,65 +53,6 @@ module SwaggerDocsGenerator
|
|
50
53
|
def schema(&block)
|
51
54
|
@schema = SwaggerDocsGenerator::Actions::Schema.new(&block).to_hash
|
52
55
|
end
|
53
|
-
=begin
|
54
|
-
def complete_hash(data)
|
55
|
-
raw = data[key]
|
56
|
-
hash[key] = raw.present? ? each_response(raw) : no_response
|
57
|
-
end
|
58
|
-
|
59
|
-
def each_response(raw)
|
60
|
-
sh = {}
|
61
|
-
raw.each do |code|
|
62
|
-
case code
|
63
|
-
when Array
|
64
|
-
sh.merge!(one_response_with_schema(code))
|
65
|
-
when Integer
|
66
|
-
sh.merge!(one_response(code))
|
67
|
-
end
|
68
|
-
end
|
69
|
-
sh
|
70
|
-
end
|
71
|
-
|
72
|
-
def no_response
|
73
|
-
one_response(200)
|
74
|
-
end
|
75
|
-
|
76
|
-
def one_response(code)
|
77
|
-
response = ActionDispatch::Response.new(code)
|
78
|
-
{ response.code => { description: response.message } }
|
79
|
-
end
|
80
|
-
|
81
|
-
# :reek:FeatureEnvy
|
82
|
-
def one_response_with_schema(code)
|
83
|
-
key = code[0]
|
84
|
-
response = ActionDispatch::Response.new(key)
|
85
|
-
{
|
86
|
-
response.code => {
|
87
|
-
'description' => response.message,
|
88
|
-
'schema' => type_or_not(code)
|
89
|
-
}
|
90
|
-
}
|
91
|
-
end
|
92
|
-
|
93
|
-
def type_or_not(code)
|
94
|
-
code.length.eql?(3) ? include_type(code) : no_type(code)
|
95
|
-
end
|
96
|
-
|
97
|
-
def include_type(code)
|
98
|
-
{
|
99
|
-
'type' => code[1],
|
100
|
-
'items' => {
|
101
|
-
'$ref' => code[2]
|
102
|
-
}
|
103
|
-
}
|
104
|
-
end
|
105
|
-
|
106
|
-
def no_type(code)
|
107
|
-
{
|
108
|
-
'$ref' => code[1]
|
109
|
-
}
|
110
|
-
end
|
111
|
-
=end
|
112
56
|
end
|
113
57
|
end
|
114
58
|
end
|
@@ -1,7 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# :reek:InstanceVariableAssumption
|
3
4
|
module SwaggerDocsGenerator
|
4
5
|
module Actions
|
6
|
+
# Object Schema
|
7
|
+
#
|
8
|
+
# Parse repsonse and create schema swagger object
|
5
9
|
class Schema
|
6
10
|
def initialize(&block)
|
7
11
|
instance_eval(&block) if block_given?
|
@@ -7,14 +7,14 @@ module SwaggerDocsGenerator
|
|
7
7
|
# and adding automaticaly tags element.
|
8
8
|
class ParserController < Parser
|
9
9
|
def initialize(description)
|
10
|
-
super(binding.of_callers[1].klass
|
11
|
-
prepare_file
|
10
|
+
super(binding.of_callers[1].klass)
|
12
11
|
@description = description
|
12
|
+
prepare_file
|
13
13
|
end
|
14
14
|
|
15
15
|
def adding_tag
|
16
|
-
json = JSON.parse(File.read(
|
17
|
-
File.open(
|
16
|
+
json = JSON.parse(File.read(temporary_file))
|
17
|
+
File.open(temporary_file, 'w') do |file|
|
18
18
|
json['tags'].merge!(construct_tags)
|
19
19
|
file.puts(JSON.pretty_generate(json))
|
20
20
|
end
|
@@ -25,15 +25,15 @@ module SwaggerDocsGenerator
|
|
25
25
|
def prepare_file
|
26
26
|
delete_file
|
27
27
|
base_file = { paths: {}, tags: {}, definitions: {} }
|
28
|
-
File.open(
|
28
|
+
File.open(temporary_file, 'a+') { |file| file.puts(base_file.to_json) }
|
29
29
|
end
|
30
30
|
|
31
31
|
def delete_file
|
32
|
-
File.delete(
|
32
|
+
File.delete(temporary_file) if File.exist?(temporary_file)
|
33
33
|
end
|
34
34
|
|
35
35
|
def construct_tags
|
36
|
-
{ name:
|
36
|
+
{ name: tag_name, description: @description }
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# :reek:InstanceVariableAssumption
|
3
4
|
module SwaggerDocsGenerator
|
4
5
|
# # Parse Controller classes
|
5
6
|
#
|
@@ -7,14 +8,14 @@ module SwaggerDocsGenerator
|
|
7
8
|
# and adding automaticaly tags element.
|
8
9
|
class ParserDefinition < Parser
|
9
10
|
def initialize(name, &block)
|
10
|
-
super(binding.of_callers[1].klass
|
11
|
+
super(binding.of_callers[1].klass)
|
11
12
|
@name = name
|
12
13
|
instance_eval(&block)
|
13
14
|
end
|
14
15
|
|
15
16
|
def adding_defintion
|
16
|
-
json = JSON.parse(File.read(
|
17
|
-
File.open(
|
17
|
+
json = JSON.parse(File.read(temporary_file))
|
18
|
+
File.open(temporary_file, 'w') do |file|
|
18
19
|
json['definitions'].merge!(construct_definition)
|
19
20
|
file.puts(JSON.pretty_generate(json))
|
20
21
|
end
|
@@ -39,10 +40,11 @@ module SwaggerDocsGenerator
|
|
39
40
|
end
|
40
41
|
|
41
42
|
def construct
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
43
|
+
{
|
44
|
+
type: @type || 'object',
|
45
|
+
required: @required || [],
|
46
|
+
properties: @properties
|
47
|
+
}
|
46
48
|
end
|
47
49
|
|
48
50
|
def format_name
|
@@ -7,21 +7,18 @@ module SwaggerDocsGenerator
|
|
7
7
|
#
|
8
8
|
# @!attribute [r] controller
|
9
9
|
# It's a name of controller parsed
|
10
|
-
# @!attribute [r]
|
11
|
-
# It's a
|
12
|
-
# @!attribute [r] version
|
13
|
-
# It's a version to API documentation parsed
|
10
|
+
# @!attribute [r] tag_name
|
11
|
+
# It's a tag attaching to controller
|
14
12
|
class Parser
|
15
|
-
attr_reader :controller, :
|
13
|
+
attr_reader :controller, :tag_name
|
16
14
|
|
17
|
-
def initialize(
|
18
|
-
@controller =
|
19
|
-
@
|
20
|
-
@version = SwaggerDocsGenerator.configure_info.version
|
15
|
+
def initialize(klass)
|
16
|
+
@controller = klass::CONTROLLER
|
17
|
+
@tag_name = defined?(klass::TAG) ? klass::TAG : controller_name
|
21
18
|
end
|
22
19
|
|
23
|
-
def
|
24
|
-
File.join(
|
20
|
+
def temporary_file
|
21
|
+
File.join(SwaggerDocsGenerator.temporary_folder, tmp_json)
|
25
22
|
end
|
26
23
|
|
27
24
|
private
|
@@ -29,6 +26,10 @@ module SwaggerDocsGenerator
|
|
29
26
|
def controller_name
|
30
27
|
@controller.controller_name
|
31
28
|
end
|
29
|
+
|
30
|
+
def tmp_json
|
31
|
+
"#{@tag_name}.json"
|
32
|
+
end
|
32
33
|
end
|
33
34
|
end
|
34
35
|
|
@@ -13,6 +13,12 @@ require 'swagger_docs_generator/configuration/configuration_info'
|
|
13
13
|
|
14
14
|
# Modules methods in a controller
|
15
15
|
require 'swagger_docs_generator/methods'
|
16
|
+
|
17
|
+
# Models reader (ORM)
|
18
|
+
require 'swagger_docs_generator/models/mongo'
|
19
|
+
require 'swagger_docs_generator/models/active_record'
|
20
|
+
|
21
|
+
# Parser class
|
16
22
|
require 'swagger_docs_generator/parser/parser'
|
17
23
|
|
18
24
|
# Extractor verb
|
data/lib/tasks/swagger.rake
CHANGED
@@ -2,18 +2,19 @@
|
|
2
2
|
|
3
3
|
namespace :swagger do
|
4
4
|
desc 'Generate Swagger Documentation files'
|
5
|
+
# Execute task just for environment 'doc'
|
5
6
|
task docs: :environment do
|
6
7
|
swag = SwaggerDocsGenerator::Generator.new
|
7
8
|
|
9
|
+
puts 'Imports documentation file...'
|
10
|
+
swag.import_documentations
|
11
|
+
|
8
12
|
puts 'Create Swagger File in :'
|
9
13
|
puts swag.info_swagger_file
|
10
14
|
|
11
|
-
# Reload all controller before parsing
|
12
|
-
Rails.application.eager_load!
|
13
|
-
|
14
|
-
# Generates files
|
15
15
|
puts
|
16
|
-
puts '
|
16
|
+
puts 'Aggregate documentation data in `swagger.json` :'
|
17
|
+
swag.info_controller_parser { |info| puts info }
|
17
18
|
swag.generate_swagger_file
|
18
19
|
|
19
20
|
puts
|
data/spec/spec_helper.rb
CHANGED
@@ -0,0 +1,154 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Test for parameter BODY
|
4
|
+
RSpec.shared_examples 'parameters body haves' do
|
5
|
+
let(:test) { param.instance_variable_get(:@param) }
|
6
|
+
|
7
|
+
include_examples 'parameters haves'
|
8
|
+
|
9
|
+
context 'schema' do
|
10
|
+
let(:result) { param_schema }
|
11
|
+
include_examples 'parameter equal', :@schema
|
12
|
+
end
|
13
|
+
|
14
|
+
it do
|
15
|
+
name = param_name.nil? ? 'body' : param_name
|
16
|
+
description = param_description.nil? ? '' : param_description
|
17
|
+
required = param_required.nil? ? true : param_required
|
18
|
+
schema = param_schema.nil? ? '' : "#/definitions/#{param_schema.humanize}"
|
19
|
+
|
20
|
+
expect(param.to_hash).to eql(
|
21
|
+
in: :body,
|
22
|
+
name: name,
|
23
|
+
description: description,
|
24
|
+
required: required,
|
25
|
+
schema: { '$ref': schema }
|
26
|
+
)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# Test for parameter FORM
|
31
|
+
RSpec.shared_examples 'parameters form haves' do
|
32
|
+
let(:test) { param.instance_variable_get(:@param) }
|
33
|
+
|
34
|
+
include_examples 'parameters haves'
|
35
|
+
|
36
|
+
it do
|
37
|
+
name = param_name.nil? ? 'form' : param_name
|
38
|
+
description = param_description.nil? ? '' : param_description
|
39
|
+
required = param_required.nil? ? true : param_required
|
40
|
+
|
41
|
+
expect(param.to_hash).to eql(
|
42
|
+
in: :form,
|
43
|
+
name: name,
|
44
|
+
description: description,
|
45
|
+
required: required
|
46
|
+
)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# Test for parameter HEADER
|
51
|
+
RSpec.shared_examples 'parameters header haves' do
|
52
|
+
let(:test) { param.instance_variable_get(:@param) }
|
53
|
+
|
54
|
+
include_examples 'parameters haves'
|
55
|
+
|
56
|
+
context 'type' do
|
57
|
+
let(:result) { param_type }
|
58
|
+
include_examples 'parameter equal', :@type
|
59
|
+
end
|
60
|
+
|
61
|
+
it do
|
62
|
+
name = param_name.nil? ? 'header' : param_name
|
63
|
+
description = param_description.nil? ? '' : param_description
|
64
|
+
required = param_required.nil? ? true : param_required
|
65
|
+
type = param_type.nil? ? '' : param_type
|
66
|
+
|
67
|
+
expect(param.to_hash).to eql(
|
68
|
+
in: :header,
|
69
|
+
name: name,
|
70
|
+
description: description,
|
71
|
+
required: required,
|
72
|
+
type: type
|
73
|
+
)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
# Test for parameter PATH
|
78
|
+
RSpec.shared_examples 'parameters path haves' do
|
79
|
+
let(:test) { param.instance_variable_get(:@param) }
|
80
|
+
|
81
|
+
include_examples 'parameters haves'
|
82
|
+
|
83
|
+
context 'type' do
|
84
|
+
let(:result) { param_type }
|
85
|
+
include_examples 'parameter equal', :@type
|
86
|
+
end
|
87
|
+
|
88
|
+
it do
|
89
|
+
name = param_name.nil? ? 'path' : param_name
|
90
|
+
description = param_description.nil? ? '' : param_description
|
91
|
+
required = param_required.nil? ? true : param_required
|
92
|
+
type = param_type.nil? ? '' : param_type
|
93
|
+
|
94
|
+
expect(param.to_hash).to eql(
|
95
|
+
in: :path,
|
96
|
+
name: name,
|
97
|
+
description: description,
|
98
|
+
required: required,
|
99
|
+
type: type
|
100
|
+
)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
# Test for parameter QUERY
|
105
|
+
RSpec.shared_examples 'parameters query haves' do
|
106
|
+
let(:test) { param.instance_variable_get(:@param) }
|
107
|
+
|
108
|
+
include_examples 'parameters haves'
|
109
|
+
|
110
|
+
context 'type' do
|
111
|
+
let(:result) { param_type }
|
112
|
+
include_examples 'parameter equal', :@type
|
113
|
+
end
|
114
|
+
|
115
|
+
it do
|
116
|
+
name = param_name.nil? ? 'query' : param_name
|
117
|
+
description = param_description.nil? ? '' : param_description
|
118
|
+
required = param_required.nil? ? true : param_required
|
119
|
+
type = param_type.nil? ? 'array' : param_type
|
120
|
+
|
121
|
+
expect(param.to_hash).to eql(
|
122
|
+
in: :query,
|
123
|
+
name: name,
|
124
|
+
description: description,
|
125
|
+
required: required,
|
126
|
+
type: type,
|
127
|
+
items: { type: 'string' }
|
128
|
+
)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
# Test for ALL parameters
|
133
|
+
RSpec.shared_examples 'parameters haves' do
|
134
|
+
it { expect(param.to_hash).to be_kind_of Hash }
|
135
|
+
|
136
|
+
context 'name' do
|
137
|
+
let(:result) { param_name }
|
138
|
+
include_examples 'parameter equal', :@name
|
139
|
+
end
|
140
|
+
|
141
|
+
context 'description' do
|
142
|
+
let(:result) { param_description }
|
143
|
+
include_examples 'parameter equal', :@description
|
144
|
+
end
|
145
|
+
|
146
|
+
context 'required' do
|
147
|
+
let(:result) { param_required }
|
148
|
+
include_examples 'parameter equal', :@required
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
RSpec.shared_examples 'parameter equal' do |parameter|
|
153
|
+
it { expect(test.instance_variable_get(parameter)).to eql(result) }
|
154
|
+
end
|
@@ -13,7 +13,7 @@ describe SwaggerDocsGenerator::Configuration, type: :gem,
|
|
13
13
|
config.host = 'http://example.com'
|
14
14
|
config.swagger = '2.2.4'
|
15
15
|
config.cleanning = false
|
16
|
-
config.
|
16
|
+
config.doc_class = 'base.rb'
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
@@ -28,16 +28,16 @@ describe SwaggerDocsGenerator::Configuration, type: :gem,
|
|
28
28
|
it_behaves_like 'variable exist', false
|
29
29
|
end
|
30
30
|
|
31
|
-
context 'base_controller' do
|
32
|
-
let(:variable) { SwaggerDocsGenerator.config.base_controller }
|
33
|
-
it_behaves_like 'variable exist', []
|
34
|
-
end
|
35
|
-
|
36
31
|
context 'base_path' do
|
37
32
|
let(:variable) { SwaggerDocsGenerator.config.base_path }
|
38
33
|
it_behaves_like 'variable exist', '/'
|
39
34
|
end
|
40
35
|
|
36
|
+
context 'doc_class' do
|
37
|
+
let(:variable) { SwaggerDocsGenerator.config.doc_class }
|
38
|
+
it_behaves_like 'variable exist', 'base.rb'
|
39
|
+
end
|
40
|
+
|
41
41
|
context 'schemes' do
|
42
42
|
let(:variable) { SwaggerDocsGenerator.config.schemes }
|
43
43
|
it_behaves_like 'variable exist', ['http']
|
@@ -15,9 +15,14 @@ describe SwaggerDocsGenerator::Configuration, type: :gem,
|
|
15
15
|
it_behaves_like 'variable exist', true
|
16
16
|
end
|
17
17
|
|
18
|
-
context '
|
19
|
-
let(:variable) { SwaggerDocsGenerator.config.
|
20
|
-
it_behaves_like 'variable exist'
|
18
|
+
context 'doc_class' do
|
19
|
+
let(:variable) { SwaggerDocsGenerator.config.doc_class }
|
20
|
+
it_behaves_like 'variable does not exist'
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'doc_folder' do
|
24
|
+
let(:variable) { SwaggerDocsGenerator.config.doc_folder }
|
25
|
+
it_behaves_like 'variable does not exist'
|
21
26
|
end
|
22
27
|
|
23
28
|
context 'base_path' do
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe SwaggerDocsGenerator::Actions::Body, type: :parser,
|
6
|
+
name: :params_body do
|
7
|
+
let(:param_name) { nil }
|
8
|
+
let(:param_description) { nil }
|
9
|
+
let(:param_required) { nil }
|
10
|
+
let(:param_schema) { nil }
|
11
|
+
let(:param) do
|
12
|
+
pname = param_name
|
13
|
+
pdescription = param_description
|
14
|
+
prequired = param_required
|
15
|
+
pschema = param_schema
|
16
|
+
SwaggerDocsGenerator::Actions::Parameter.new do
|
17
|
+
body do
|
18
|
+
name pname
|
19
|
+
description pdescription
|
20
|
+
required prequired
|
21
|
+
schema pschema
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'when attribute complete' do
|
27
|
+
let(:param_name) { Faker::Color.color_name }
|
28
|
+
let(:param_description) { Faker::Beer.name }
|
29
|
+
let(:param_required) { Faker::Boolean.boolean }
|
30
|
+
let(:param_schema) { Faker::Name.first_name }
|
31
|
+
|
32
|
+
it_behaves_like 'parameters body haves'
|
33
|
+
end
|
34
|
+
|
35
|
+
context 'when attribute is incomplete' do
|
36
|
+
it_behaves_like 'parameters body haves'
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'when name attribute alone' do
|
40
|
+
let(:param_name) { Faker::Color.color_name }
|
41
|
+
|
42
|
+
it_behaves_like 'parameters body haves'
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'when description attribute alone' do
|
46
|
+
let(:param_description) { Faker::Beer.name }
|
47
|
+
|
48
|
+
it_behaves_like 'parameters body haves'
|
49
|
+
end
|
50
|
+
|
51
|
+
context 'when required attribute alone' do
|
52
|
+
let(:param_required) { Faker::Boolean.boolean }
|
53
|
+
|
54
|
+
it_behaves_like 'parameters body haves'
|
55
|
+
end
|
56
|
+
|
57
|
+
context 'when schema attribute alone' do
|
58
|
+
let(:param_schema) { Faker::Name.first_name }
|
59
|
+
|
60
|
+
it_behaves_like 'parameters body haves'
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe SwaggerDocsGenerator::Actions::Form, type: :parser,
|
6
|
+
name: :params_form do
|
7
|
+
let(:param_name) { nil }
|
8
|
+
let(:param_description) { nil }
|
9
|
+
let(:param_required) { nil }
|
10
|
+
let(:param) do
|
11
|
+
pname = param_name
|
12
|
+
pdescription = param_description
|
13
|
+
prequired = param_required
|
14
|
+
SwaggerDocsGenerator::Actions::Parameter.new do
|
15
|
+
form do
|
16
|
+
name pname
|
17
|
+
description pdescription
|
18
|
+
required prequired
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'when attribute complete' do
|
24
|
+
let(:param_name) { Faker::Color.color_name }
|
25
|
+
let(:param_description) { Faker::Beer.name }
|
26
|
+
let(:param_required) { Faker::Boolean.boolean }
|
27
|
+
|
28
|
+
it_behaves_like 'parameters form haves'
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when attribute is incomplete' do
|
32
|
+
it_behaves_like 'parameters form haves'
|
33
|
+
end
|
34
|
+
|
35
|
+
context 'when name attribute alone' do
|
36
|
+
let(:param_name) { Faker::Color.color_name }
|
37
|
+
|
38
|
+
it_behaves_like 'parameters form haves'
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'when description attribute alone' do
|
42
|
+
let(:param_description) { Faker::Beer.name }
|
43
|
+
|
44
|
+
it_behaves_like 'parameters form haves'
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'when required attribute alone' do
|
48
|
+
let(:param_required) { Faker::Boolean.boolean }
|
49
|
+
|
50
|
+
it_behaves_like 'parameters form haves'
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe SwaggerDocsGenerator::Actions::Header, type: :parser,
|
6
|
+
name: :params_header do
|
7
|
+
let(:param_name) { nil }
|
8
|
+
let(:param_description) { nil }
|
9
|
+
let(:param_required) { nil }
|
10
|
+
let(:param_type) { nil }
|
11
|
+
let(:param) do
|
12
|
+
pname = param_name
|
13
|
+
pdescription = param_description
|
14
|
+
prequired = param_required
|
15
|
+
ptype = param_type
|
16
|
+
SwaggerDocsGenerator::Actions::Parameter.new do
|
17
|
+
header do
|
18
|
+
name pname
|
19
|
+
description pdescription
|
20
|
+
required prequired
|
21
|
+
type ptype
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'when attribute complete' do
|
27
|
+
let(:param_name) { Faker::Color.color_name }
|
28
|
+
let(:param_description) { Faker::Beer.name }
|
29
|
+
let(:param_required) { Faker::Boolean.boolean }
|
30
|
+
let(:param_type) { Faker::Name.first_name }
|
31
|
+
|
32
|
+
it_behaves_like 'parameters header haves'
|
33
|
+
end
|
34
|
+
|
35
|
+
context 'when attribute is incomplete' do
|
36
|
+
it_behaves_like 'parameters header haves'
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'when name attribute alone' do
|
40
|
+
let(:param_name) { Faker::Color.color_name }
|
41
|
+
|
42
|
+
it_behaves_like 'parameters header haves'
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'when description attribute alone' do
|
46
|
+
let(:param_description) { Faker::Beer.name }
|
47
|
+
|
48
|
+
it_behaves_like 'parameters header haves'
|
49
|
+
end
|
50
|
+
|
51
|
+
context 'when required attribute alone' do
|
52
|
+
let(:param_required) { Faker::Boolean.boolean }
|
53
|
+
|
54
|
+
it_behaves_like 'parameters header haves'
|
55
|
+
end
|
56
|
+
|
57
|
+
context 'when type attribute alone' do
|
58
|
+
let(:param_type) { Faker::Name.first_name }
|
59
|
+
|
60
|
+
it_behaves_like 'parameters header haves'
|
61
|
+
end
|
62
|
+
end
|