apipie-rails 0.9.4 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +8 -14
- data/.rubocop_todo.yml +102 -213
- data/CHANGELOG.md +17 -6
- data/README.rst +12 -12
- data/app/controllers/apipie/apipies_controller.rb +4 -4
- data/lib/apipie/apipie_module.rb +4 -4
- data/lib/apipie/application.rb +70 -54
- data/lib/apipie/configuration.rb +19 -26
- data/lib/apipie/dsl_definition.rb +4 -5
- data/lib/apipie/extractor/collector.rb +2 -2
- data/lib/apipie/extractor.rb +1 -1
- data/lib/apipie/generator/config.rb +12 -0
- data/lib/apipie/generator/swagger/computed_interface_id.rb +23 -0
- data/lib/apipie/generator/swagger/config.rb +78 -0
- data/lib/apipie/generator/swagger/context.rb +12 -1
- data/lib/apipie/generator/swagger/method_description/api_decorator.rb +20 -0
- data/lib/apipie/generator/swagger/method_description/api_schema_service.rb +86 -0
- data/lib/apipie/generator/swagger/method_description/decorator.rb +22 -0
- data/lib/apipie/generator/swagger/method_description/parameters_service.rb +139 -0
- data/lib/apipie/generator/swagger/method_description/response_schema_service.rb +46 -0
- data/lib/apipie/generator/swagger/method_description/response_service.rb +58 -0
- data/lib/apipie/generator/swagger/method_description.rb +2 -0
- data/lib/apipie/generator/swagger/operation_id.rb +1 -1
- data/lib/apipie/generator/swagger/param_description/builder.rb +4 -4
- data/lib/apipie/generator/swagger/param_description/composite.rb +9 -1
- data/lib/apipie/generator/swagger/param_description/in.rb +1 -1
- data/lib/apipie/generator/swagger/param_description/path_params_composite.rb +61 -0
- data/lib/apipie/generator/swagger/param_description/referenced_composite.rb +36 -0
- data/lib/apipie/generator/swagger/param_description/type.rb +9 -2
- data/lib/apipie/generator/swagger/path_decorator.rb +36 -0
- data/lib/apipie/generator/swagger/referenced_definitions.rb +17 -0
- data/lib/apipie/generator/swagger/resource_description_collection.rb +30 -0
- data/lib/apipie/generator/swagger/resource_description_composite.rb +56 -0
- data/lib/apipie/generator/swagger/schema.rb +63 -0
- data/lib/apipie/generator/swagger/type_extractor.rb +0 -19
- data/lib/apipie/generator/swagger/warning.rb +3 -6
- data/lib/apipie/generator/swagger/warning_writer.rb +7 -1
- data/lib/apipie/method_description.rb +4 -2
- data/lib/apipie/param_description.rb +4 -2
- data/lib/apipie/resource_description.rb +1 -1
- data/lib/apipie/swagger_generator.rb +27 -551
- data/lib/apipie/validator.rb +7 -3
- data/lib/apipie/version.rb +1 -1
- data/lib/apipie-rails.rb +17 -0
- data/lib/tasks/apipie.rake +15 -10
- data/spec/controllers/api/v2/nested/resources_controller_spec.rb +2 -2
- data/spec/controllers/pets_controller_spec.rb +10 -16
- data/spec/controllers/users_controller_spec.rb +2 -2
- data/spec/dummy/app/controllers/pets_controller.rb +4 -4
- data/spec/dummy/app/controllers/pets_using_self_describing_classes_controller.rb +2 -2
- data/spec/dummy/app/controllers/twitter_example_controller.rb +2 -2
- data/spec/dummy/app/controllers/users_controller.rb +5 -5
- data/spec/lib/apipie/application_spec.rb +16 -7
- data/spec/lib/apipie/configuration_spec.rb +15 -0
- data/spec/lib/apipie/generator/swagger/config_spec.rb +19 -0
- data/spec/lib/apipie/generator/swagger/context_spec.rb +22 -2
- data/spec/lib/apipie/generator/swagger/method_description/api_schema_service_spec.rb +106 -0
- data/spec/lib/apipie/generator/swagger/method_description/response_schema_service_spec.rb +105 -0
- data/spec/lib/apipie/generator/swagger/param_description/builder_spec.rb +1 -1
- data/spec/lib/apipie/generator/swagger/param_description/composite_spec.rb +2 -2
- data/spec/lib/apipie/generator/swagger/param_description/type_spec.rb +7 -7
- data/spec/lib/apipie/generator/swagger/path_decorator_spec.rb +57 -0
- data/spec/lib/apipie/generator/swagger/referenced_definitions_spec.rb +35 -0
- data/spec/lib/apipie/generator/swagger/resource_description_composite_spec.rb +37 -0
- data/spec/lib/apipie/generator/swagger/resource_descriptions_collection_spec.rb +57 -0
- data/spec/lib/apipie/generator/swagger/schema_spec.rb +89 -0
- data/spec/lib/apipie/generator/swagger/type_extractor_spec.rb +0 -43
- data/spec/lib/apipie/generator/swagger/warning_spec.rb +1 -1
- data/spec/lib/apipie/generator/swagger/warning_writer_spec.rb +19 -7
- data/spec/lib/apipie/method_description_spec.rb +101 -66
- data/spec/lib/apipie/param_description_spec.rb +209 -49
- data/spec/lib/apipie/param_group_spec.rb +1 -0
- data/spec/lib/apipie/resource_description_spec.rb +1 -1
- data/spec/lib/apipie/swagger_generator_spec.rb +94 -0
- data/spec/lib/apipie/validator_spec.rb +47 -11
- data/spec/lib/swagger/rake_swagger_spec.rb +4 -4
- data/spec/lib/swagger/swagger_dsl_spec.rb +7 -7
- data/spec/lib/validators/array_validator_spec.rb +1 -1
- metadata +28 -2
@@ -114,88 +114,210 @@ describe Apipie::ParamDescription do
|
|
114
114
|
end
|
115
115
|
|
116
116
|
describe 'validate' do
|
117
|
+
subject { param_description.validate(validation_value) }
|
118
|
+
|
119
|
+
let(:allow_blank) { nil }
|
120
|
+
|
121
|
+
let(:param_description) do
|
122
|
+
Apipie::ParamDescription.new(
|
123
|
+
method_desc,
|
124
|
+
:param,
|
125
|
+
validation_type,
|
126
|
+
allow_blank: allow_blank
|
127
|
+
)
|
128
|
+
end
|
129
|
+
|
117
130
|
context 'when allow_blank is ignored, as it was before 0.7.0' do
|
118
|
-
before
|
119
|
-
|
120
|
-
end
|
131
|
+
before { Apipie.configuration.ignore_allow_blank_false = true }
|
132
|
+
after { Apipie.configuration.ignore_allow_blank_false = false }
|
121
133
|
|
122
|
-
context 'when
|
123
|
-
|
124
|
-
|
134
|
+
context 'when validation type is :boolean' do
|
135
|
+
let(:validation_type) { :boolean }
|
136
|
+
|
137
|
+
context 'when validation value is false' do
|
138
|
+
let(:validation_value) { false }
|
139
|
+
|
140
|
+
it 'should not raise an error' do
|
141
|
+
expect { subject }.not_to raise_error
|
142
|
+
end
|
125
143
|
end
|
126
144
|
|
127
|
-
|
128
|
-
|
145
|
+
context 'when validation value is an empty string' do
|
146
|
+
let(:validation_value) { '' }
|
147
|
+
|
148
|
+
it 'should raise an error' do
|
149
|
+
expect { subject }.to raise_error(Apipie::ParamInvalid)
|
150
|
+
end
|
129
151
|
end
|
130
152
|
end
|
131
153
|
|
132
|
-
context 'when
|
133
|
-
|
134
|
-
|
135
|
-
|
154
|
+
context 'when validation type is a boolean array' do
|
155
|
+
let(:validation_type) { [true, false] }
|
156
|
+
|
157
|
+
context 'when validation value is false' do
|
158
|
+
let(:validation_value) { false }
|
159
|
+
|
160
|
+
it 'should not raise an error' do
|
161
|
+
expect { subject }.not_to raise_error
|
136
162
|
end
|
137
163
|
end
|
138
|
-
|
139
|
-
|
140
|
-
|
164
|
+
|
165
|
+
context 'when validation value is true' do
|
166
|
+
let(:validation_value) { true }
|
167
|
+
|
168
|
+
it 'should not raise an error' do
|
169
|
+
expect { subject }.not_to raise_error
|
141
170
|
end
|
142
171
|
end
|
143
|
-
|
144
|
-
|
145
|
-
|
172
|
+
|
173
|
+
context 'when validation value is an empty string' do
|
174
|
+
let(:validation_value) { '' }
|
175
|
+
|
176
|
+
it 'should raise an error' do
|
177
|
+
expect { subject }.to raise_error(Apipie::ParamInvalid)
|
146
178
|
end
|
147
179
|
end
|
148
180
|
end
|
149
181
|
|
150
|
-
|
151
|
-
|
182
|
+
context 'when validation type is String' do
|
183
|
+
let(:validation_type) { String }
|
184
|
+
|
185
|
+
context 'when validation value is empty string' do
|
186
|
+
let(:validation_value) { '' }
|
187
|
+
|
188
|
+
it 'should not raise an error' do
|
189
|
+
expect { subject }.not_to raise_error
|
190
|
+
end
|
191
|
+
|
192
|
+
context 'when allow_blank is specified as true' do
|
193
|
+
let(:allow_blank) { true }
|
194
|
+
|
195
|
+
it 'should not raise an error' do
|
196
|
+
expect { subject }.not_to raise_error
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|
152
200
|
end
|
153
201
|
end
|
154
202
|
|
155
|
-
context 'when the
|
156
|
-
|
157
|
-
|
158
|
-
|
203
|
+
context 'when the validation type is :boolean' do
|
204
|
+
let(:validation_type) { :boolean }
|
205
|
+
|
206
|
+
context 'when validation value' do
|
207
|
+
let(:validation_value) { false }
|
208
|
+
|
209
|
+
it 'should not raise an error' do
|
210
|
+
expect { subject }.not_to raise_error
|
211
|
+
end
|
212
|
+
|
213
|
+
context 'when allow_blank is false' do
|
214
|
+
let(:allow_blank) { false }
|
215
|
+
|
216
|
+
it 'should not raise an error' do
|
217
|
+
expect { subject }.not_to raise_error
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
221
|
+
context 'when allow_blank is true' do
|
222
|
+
let(:allow_blank) { true }
|
159
223
|
|
160
|
-
|
161
|
-
|
224
|
+
it 'should not raise an error' do
|
225
|
+
expect { subject }.not_to raise_error
|
226
|
+
end
|
227
|
+
end
|
162
228
|
end
|
163
229
|
|
164
|
-
|
165
|
-
|
230
|
+
context 'when validation value is empty string' do
|
231
|
+
let(:validation_value) { '' }
|
232
|
+
|
233
|
+
it 'should raise an error' do
|
234
|
+
expect { subject }.to raise_error(Apipie::ParamInvalid)
|
235
|
+
end
|
166
236
|
end
|
167
237
|
end
|
168
238
|
|
169
|
-
context
|
170
|
-
|
171
|
-
|
239
|
+
context 'when validation type is a boolean array' do
|
240
|
+
let(:validation_type) { [true, false] }
|
241
|
+
|
242
|
+
context 'when validation value is false' do
|
243
|
+
let(:validation_value) { false }
|
244
|
+
|
245
|
+
it 'should not raise an error' do
|
246
|
+
expect { subject }.not_to raise_error
|
247
|
+
end
|
172
248
|
end
|
173
249
|
|
174
|
-
|
175
|
-
|
250
|
+
context 'when validation value is true' do
|
251
|
+
let(:validation_value) { true }
|
252
|
+
|
253
|
+
it 'should not raise an error' do
|
254
|
+
expect { subject }.not_to raise_error
|
255
|
+
end
|
176
256
|
end
|
177
257
|
|
178
|
-
|
179
|
-
|
258
|
+
context 'when validation value is an empty string' do
|
259
|
+
let(:validation_value) { '' }
|
260
|
+
|
261
|
+
it 'should raise an error' do
|
262
|
+
expect { subject }.to raise_error(Apipie::ParamInvalid)
|
263
|
+
end
|
180
264
|
end
|
181
265
|
end
|
182
266
|
|
183
|
-
context 'when the
|
184
|
-
|
185
|
-
|
186
|
-
|
267
|
+
context 'when the validation type is a custom one' do
|
268
|
+
let(:validation_type) { :custom_bool }
|
269
|
+
|
270
|
+
context 'when ignore_allow_blank? returning true' do
|
271
|
+
before do
|
272
|
+
allow(CustomBoolValidator).to receive(:ignore_allow_blank?).and_return(true)
|
273
|
+
end
|
274
|
+
|
275
|
+
context 'when a blank but valid value is passed' do
|
276
|
+
let(:validation_value) { false }
|
277
|
+
|
278
|
+
it 'should not raise an error' do
|
279
|
+
expect { subject }.not_to raise_error
|
280
|
+
end
|
281
|
+
|
282
|
+
context 'when allow_blank is false' do
|
283
|
+
let(:allow_blank) { false }
|
284
|
+
|
285
|
+
it 'should not raise an error' do
|
286
|
+
expect { subject }.not_to raise_error
|
287
|
+
end
|
288
|
+
end
|
289
|
+
end
|
290
|
+
|
291
|
+
context 'when a blank but invalid value is passed' do
|
292
|
+
let(:validation_value) { '' }
|
293
|
+
|
294
|
+
it 'should raise an error' do
|
295
|
+
expect { subject }.to raise_error(Apipie::ParamInvalid)
|
296
|
+
end
|
187
297
|
end
|
188
298
|
end
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
299
|
+
end
|
300
|
+
|
301
|
+
context 'when validation type is String' do
|
302
|
+
let(:validation_type) { String }
|
303
|
+
|
304
|
+
context 'when a blank but invalid value is passed' do
|
305
|
+
let(:validation_value) { '' }
|
306
|
+
|
307
|
+
it 'should raise an error' do
|
308
|
+
expect { subject }.to raise_error(Apipie::ParamInvalid)
|
194
309
|
end
|
195
310
|
end
|
196
|
-
|
197
|
-
|
198
|
-
|
311
|
+
|
312
|
+
context 'when allow_blank is specified as true' do
|
313
|
+
let(:allow_blank) { true }
|
314
|
+
|
315
|
+
context 'when and empty string is given' do
|
316
|
+
let(:validation_value) { '' }
|
317
|
+
|
318
|
+
it 'should not raise an error' do
|
319
|
+
expect { subject }.not_to raise_error
|
320
|
+
end
|
199
321
|
end
|
200
322
|
end
|
201
323
|
end
|
@@ -239,7 +361,6 @@ describe Apipie::ParamDescription do
|
|
239
361
|
end
|
240
362
|
end
|
241
363
|
|
242
|
-
|
243
364
|
describe "required_by_default config option" do
|
244
365
|
context "parameters required by default" do
|
245
366
|
|
@@ -369,7 +490,6 @@ describe Apipie::ParamDescription do
|
|
369
490
|
end
|
370
491
|
end
|
371
492
|
|
372
|
-
|
373
493
|
describe 'sub params' do
|
374
494
|
|
375
495
|
context 'with HashValidator' do
|
@@ -508,4 +628,44 @@ describe Apipie::ParamDescription do
|
|
508
628
|
end
|
509
629
|
end
|
510
630
|
|
631
|
+
describe '#required' do
|
632
|
+
subject { param_description.required }
|
633
|
+
|
634
|
+
let(:param_description) do
|
635
|
+
Apipie::ParamDescription.new(method_desc, :param, validator, options)
|
636
|
+
end
|
637
|
+
|
638
|
+
context 'when is passed in options' do
|
639
|
+
let(:validator) { String }
|
640
|
+
|
641
|
+
context 'when is false' do
|
642
|
+
let(:options) { { required: false } }
|
643
|
+
|
644
|
+
it { is_expected.to eq(false) }
|
645
|
+
end
|
646
|
+
|
647
|
+
context 'when is true' do
|
648
|
+
let(:options) { { required: true } }
|
649
|
+
|
650
|
+
it { is_expected.to eq(true) }
|
651
|
+
end
|
652
|
+
end
|
653
|
+
|
654
|
+
context 'when validator options are passed' do
|
655
|
+
let(:options) { { only_in: :response } }
|
656
|
+
let(:validator) { { array_of: String, required: required } }
|
657
|
+
|
658
|
+
context 'when required is false' do
|
659
|
+
let(:required) { false }
|
660
|
+
|
661
|
+
it { is_expected.to eq(false) }
|
662
|
+
end
|
663
|
+
|
664
|
+
context 'when required is true' do
|
665
|
+
let(:required) { true }
|
666
|
+
|
667
|
+
it { is_expected.to eq(true) }
|
668
|
+
end
|
669
|
+
end
|
670
|
+
end
|
511
671
|
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'dummy/app/controllers/pets_using_self_describing_classes_controller'
|
3
|
+
|
4
|
+
describe Apipie::SwaggerGenerator do
|
5
|
+
describe '.json_schema_for_method_response' do
|
6
|
+
subject { json_schema_for_method_response }
|
7
|
+
|
8
|
+
let(:response_description_dsl) do
|
9
|
+
proc do
|
10
|
+
property :a_number, Integer
|
11
|
+
property :an_optional_number, Integer, required: false
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
let(:response_description_options) do
|
16
|
+
[{}, PetsController, response_description_dsl, nil]
|
17
|
+
end
|
18
|
+
|
19
|
+
let(:dsl_data) do
|
20
|
+
ActionController::Base
|
21
|
+
.send(:_apipie_dsl_data_init)
|
22
|
+
.merge(
|
23
|
+
{
|
24
|
+
returns: [[200, response_description_options]],
|
25
|
+
api_args: [
|
26
|
+
['get', '/path', 'Some api description', { deprecated: true }]
|
27
|
+
]
|
28
|
+
}
|
29
|
+
)
|
30
|
+
end
|
31
|
+
|
32
|
+
let(:method_description) do
|
33
|
+
Apipie::MethodDescription.new(
|
34
|
+
:show,
|
35
|
+
Apipie::ResourceDescription.new(UsersController, 'users'),
|
36
|
+
dsl_data
|
37
|
+
)
|
38
|
+
end
|
39
|
+
|
40
|
+
let(:json_schema_for_method_response) do
|
41
|
+
described_class.json_schema_for_method_response(
|
42
|
+
method_description,
|
43
|
+
return_code,
|
44
|
+
false
|
45
|
+
)
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'when there is no return code for responses' do
|
49
|
+
let(:return_code) { 3000 }
|
50
|
+
|
51
|
+
it { is_expected.to be_nil }
|
52
|
+
end
|
53
|
+
|
54
|
+
context 'when return code exists' do
|
55
|
+
let(:return_code) { 200 }
|
56
|
+
|
57
|
+
describe 'properties' do
|
58
|
+
subject(:properties) { json_schema_for_method_response[:properties] }
|
59
|
+
|
60
|
+
it 'returns correct properties' do
|
61
|
+
expect(properties).to eq(
|
62
|
+
{
|
63
|
+
a_number: {
|
64
|
+
type: 'number'
|
65
|
+
},
|
66
|
+
an_optional_number: {
|
67
|
+
type: 'number'
|
68
|
+
}
|
69
|
+
}
|
70
|
+
)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe '.json_schema_for_self_describing_class' do
|
77
|
+
subject(:schema) do
|
78
|
+
described_class.json_schema_for_self_describing_class(
|
79
|
+
self_describing_class,
|
80
|
+
allow_null
|
81
|
+
)
|
82
|
+
end
|
83
|
+
|
84
|
+
let(:self_describing_class) { PetWithMeasurements }
|
85
|
+
let(:allow_null) { false }
|
86
|
+
|
87
|
+
before { Apipie.configuration.generator.swagger.responses_use_refs = false }
|
88
|
+
|
89
|
+
it 'returns the self describing class schema' do
|
90
|
+
expect(schema.keys).to include(:type, :properties, :required)
|
91
|
+
expect(schema[:properties].keys).to include(:pet_name, :animal_type, :pet_measurements)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -51,19 +51,55 @@ describe Apipie::Validator do
|
|
51
51
|
end
|
52
52
|
|
53
53
|
describe 'BooleanValidator' do
|
54
|
-
|
55
|
-
|
56
|
-
expect(validator.validate("1")).to be_truthy
|
57
|
-
expect(validator.validate(1)).to be_truthy
|
58
|
-
expect(validator.validate(true)).to be_truthy
|
59
|
-
expect(validator.validate(0)).to be_truthy
|
60
|
-
expect(validator.validate(false)).to be_truthy
|
61
|
-
expect(validator.validate({ 1 => 1 })).to be_falsey
|
54
|
+
let(:validator) do
|
55
|
+
Apipie::Validator::BooleanValidator
|
62
56
|
end
|
63
57
|
|
64
|
-
|
65
|
-
|
66
|
-
|
58
|
+
let(:validator_instance) { validator.new(params_desc) }
|
59
|
+
|
60
|
+
describe '.build' do
|
61
|
+
subject { validator.build(params_desc, argument, nil, nil) }
|
62
|
+
|
63
|
+
context 'when argument is [true, false]' do
|
64
|
+
let(:argument) { [true, false] }
|
65
|
+
|
66
|
+
it { is_expected.to be_an_instance_of(Apipie::Validator::BooleanValidator) }
|
67
|
+
end
|
68
|
+
|
69
|
+
context 'when argument is :bool' do
|
70
|
+
let(:argument) { :bool }
|
71
|
+
|
72
|
+
it { is_expected.to be_an_instance_of(Apipie::Validator::BooleanValidator) }
|
73
|
+
end
|
74
|
+
|
75
|
+
context 'when argument :boolean' do
|
76
|
+
let(:argument) { :boolean }
|
77
|
+
|
78
|
+
it { is_expected.to be_an_instance_of(Apipie::Validator::BooleanValidator) }
|
79
|
+
end
|
80
|
+
|
81
|
+
context 'when argument :booooooooolean' do
|
82
|
+
let(:argument) { :booooooooolean }
|
83
|
+
|
84
|
+
it { is_expected.to be_nil }
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe '#validate' do
|
89
|
+
it "should validate by object class" do
|
90
|
+
expect(validator_instance.validate("1")).to be_truthy
|
91
|
+
expect(validator_instance.validate(1)).to be_truthy
|
92
|
+
expect(validator_instance.validate(true)).to be_truthy
|
93
|
+
expect(validator_instance.validate(0)).to be_truthy
|
94
|
+
expect(validator_instance.validate(false)).to be_truthy
|
95
|
+
expect(validator_instance.validate({ 1 => 1 })).to be_falsey
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
describe '#description' do
|
100
|
+
subject { validator_instance.description }
|
101
|
+
|
102
|
+
it { is_expected.to eq('Must be one of: <code>true</code>, <code>false</code>, <code>1</code>, <code>0</code>.') }
|
67
103
|
end
|
68
104
|
end
|
69
105
|
|
@@ -12,7 +12,7 @@ describe 'rake tasks' do
|
|
12
12
|
|
13
13
|
before do
|
14
14
|
Apipie.configuration.doc_path = doc_path
|
15
|
-
Apipie.configuration.
|
15
|
+
Apipie.configuration.generator.swagger.suppress_warnings = true
|
16
16
|
allow(Apipie).to receive(:reload_documentation)
|
17
17
|
subject.invoke(*task_args)
|
18
18
|
end
|
@@ -102,7 +102,7 @@ describe 'rake tasks' do
|
|
102
102
|
|
103
103
|
expect_param_def("get", "/users/by_department", "department", "in", "query")
|
104
104
|
expect_param_def("get", "/users/by_department", "department", "enum",
|
105
|
-
[
|
105
|
+
%w[finance operations sales marketing HR])
|
106
106
|
|
107
107
|
expect_tags_def("get", "/twitter_example/{id}/followers", %w[twitter_example following index search])
|
108
108
|
end
|
@@ -128,11 +128,11 @@ describe 'rake tasks' do
|
|
128
128
|
expect_param_def("put", "/users/{id}", "oauth", "in", "formData")
|
129
129
|
expect_param_def("get", "/users/by_department", "department", "in", "query")
|
130
130
|
expect_param_def("get", "/users/by_department", "department", "enum",
|
131
|
-
[
|
131
|
+
%w[finance operations sales marketing HR])
|
132
132
|
|
133
133
|
expect_param_def("get", "/users/in_departments", "departments", "in", "query")
|
134
134
|
expect_array_param_def("get", "/users/in_departments", "departments",
|
135
|
-
[
|
135
|
+
%w[finance operations sales marketing HR])
|
136
136
|
|
137
137
|
expect_tags_def("get", "/twitter_example/{id}/followers", %w[twitter_example following index search])
|
138
138
|
|
@@ -6,7 +6,7 @@ describe "Swagger Responses" do
|
|
6
6
|
let(:desc) { Apipie.get_resource_description(controller_class, Apipie.configuration.default_version) }
|
7
7
|
|
8
8
|
let(:swagger) {
|
9
|
-
Apipie.configuration.
|
9
|
+
Apipie.configuration.generator.swagger.suppress_warnings = true
|
10
10
|
Apipie.to_swagger_json(Apipie.configuration.default_version, controller_class.to_s.underscore.sub("_controller", ""))
|
11
11
|
}
|
12
12
|
|
@@ -141,7 +141,7 @@ describe "Swagger Responses" do
|
|
141
141
|
|
142
142
|
a_schema = resolve_refs(schema[:items])
|
143
143
|
expect(a_schema).to have_field(:pet_name, 'string', {:description => 'Name of pet', :required => false})
|
144
|
-
expect(a_schema).to have_field(:animal_type, 'string', {:description => 'Type of pet', :enum => [
|
144
|
+
expect(a_schema).to have_field(:animal_type, 'string', {:description => 'Type of pet', :enum => %w[dog cat iguana kangaroo]})
|
145
145
|
end
|
146
146
|
|
147
147
|
|
@@ -210,7 +210,7 @@ describe "Swagger Responses" do
|
|
210
210
|
|
211
211
|
schema = response[:schema]
|
212
212
|
expect(schema).to have_field(:pet_name, 'string', {:description => 'Name of pet', :required => false})
|
213
|
-
expect(schema).to have_field(:animal_type, 'string', {:description => 'Type of pet', :enum => [
|
213
|
+
expect(schema).to have_field(:animal_type, 'string', {:description => 'Type of pet', :enum => %w[dog cat iguana kangaroo]})
|
214
214
|
end
|
215
215
|
|
216
216
|
it 'should have the 404 response description overridden' do
|
@@ -247,7 +247,7 @@ describe "Swagger Responses" do
|
|
247
247
|
|
248
248
|
schema = response[:schema]
|
249
249
|
expect(schema).to have_field(:pet_name, 'string', {:description => 'Name of pet', :required => false})
|
250
|
-
expect(schema).to have_field(:animal_type, 'string', {:description => 'Type of pet', :enum => [
|
250
|
+
expect(schema).to have_field(:animal_type, 'string', {:description => 'Type of pet', :enum => %w[dog cat iguana kangaroo]})
|
251
251
|
end
|
252
252
|
end
|
253
253
|
|
@@ -282,7 +282,7 @@ describe "Swagger Responses" do
|
|
282
282
|
schema = response[:schema]
|
283
283
|
expect(schema).to have_field(:pet_id, 'number', {:description => 'id of pet'})
|
284
284
|
expect(schema).to have_field(:pet_name, 'string', {:description => 'Name of pet', :required => false})
|
285
|
-
expect(schema).to have_field(:animal_type, 'string', {:description => 'Type of pet', :enum => [
|
285
|
+
expect(schema).to have_field(:animal_type, 'string', {:description => 'Type of pet', :enum => %w[dog cat iguana kangaroo]})
|
286
286
|
expect(schema).not_to have_field(:partial_match_allowed, 'boolean', {:required => false})
|
287
287
|
end
|
288
288
|
|
@@ -433,7 +433,7 @@ describe "Swagger Responses" do
|
|
433
433
|
|
434
434
|
schema = response[:schema]
|
435
435
|
expect(schema).to have_field(:int_array, 'array', {items: {type: 'number'}})
|
436
|
-
expect(schema).to have_field(:enum_array, 'array', {items: {type: 'string', enum: [
|
436
|
+
expect(schema).to have_field(:enum_array, 'array', {items: {type: 'string', enum: %w[v1 v2 v3]}})
|
437
437
|
end
|
438
438
|
|
439
439
|
|
@@ -551,7 +551,7 @@ describe "Swagger Responses" do
|
|
551
551
|
|
552
552
|
a_schema = schema[:items]
|
553
553
|
expect(a_schema).to have_field(:pet_name, 'string', {:description => 'Name of pet', :required => false})
|
554
|
-
expect(a_schema).to have_field(:animal_type, 'string', {:description => 'Type of pet', :enum => [
|
554
|
+
expect(a_schema).to have_field(:animal_type, 'string', {:description => 'Type of pet', :enum => %w[dog cat iguana kangaroo]})
|
555
555
|
end
|
556
556
|
end
|
557
557
|
|
@@ -30,7 +30,7 @@ module Apipie::Validator
|
|
30
30
|
let(:type) { String }
|
31
31
|
|
32
32
|
it "accepts array of specified type" do
|
33
|
-
expect(validator.validate([
|
33
|
+
expect(validator.validate(%w[string1 string2])).to eq(true)
|
34
34
|
end
|
35
35
|
|
36
36
|
it "accepts empty array" do
|