grape 1.3.3 → 1.4.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/CHANGELOG.md +19 -1
- data/README.md +30 -7
- data/UPGRADING.md +106 -45
- data/lib/grape.rb +2 -2
- data/lib/grape/api/instance.rb +22 -26
- data/lib/grape/dsl/inside_route.rb +33 -11
- data/lib/grape/dsl/validations.rb +18 -1
- data/lib/grape/eager_load.rb +1 -1
- data/lib/grape/endpoint.rb +8 -6
- data/lib/grape/middleware/base.rb +2 -2
- data/lib/grape/middleware/formatter.rb +3 -3
- data/lib/grape/router.rb +24 -29
- data/lib/grape/{serve_file → serve_stream}/file_body.rb +1 -1
- data/lib/grape/{serve_file → serve_stream}/sendfile_response.rb +1 -1
- data/lib/grape/{serve_file/file_response.rb → serve_stream/stream_response.rb} +8 -8
- data/lib/grape/validations/params_scope.rb +3 -3
- data/lib/grape/validations/types/primitive_coercer.rb +1 -2
- data/lib/grape/version.rb +1 -1
- data/spec/grape/api_spec.rb +65 -0
- data/spec/grape/dsl/inside_route_spec.rb +175 -33
- data/spec/grape/integration/rack_sendfile_spec.rb +12 -8
- data/spec/grape/middleware/auth/strategies_spec.rb +1 -1
- data/spec/grape/middleware/formatter_spec.rb +1 -1
- data/spec/grape/validations/types/primitive_coercer_spec.rb +60 -4
- data/spec/grape/validations/validators/coerce_spec.rb +86 -0
- data/spec/grape/validations_spec.rb +17 -13
- data/spec/integration/eager_load/eager_load_spec.rb +15 -0
- metadata +108 -106
@@ -4,12 +4,16 @@ require 'spec_helper'
|
|
4
4
|
|
5
5
|
describe Rack::Sendfile do
|
6
6
|
subject do
|
7
|
-
|
7
|
+
content_object = file_object
|
8
8
|
app = Class.new(Grape::API) do
|
9
9
|
use Rack::Sendfile
|
10
10
|
format :json
|
11
11
|
get do
|
12
|
-
|
12
|
+
if content_object.is_a?(String)
|
13
|
+
sendfile content_object
|
14
|
+
else
|
15
|
+
stream content_object
|
16
|
+
end
|
13
17
|
end
|
14
18
|
end
|
15
19
|
|
@@ -22,9 +26,9 @@ describe Rack::Sendfile do
|
|
22
26
|
app.call(env)
|
23
27
|
end
|
24
28
|
|
25
|
-
context do
|
26
|
-
let(:
|
27
|
-
|
29
|
+
context 'when calling sendfile' do
|
30
|
+
let(:file_object) do
|
31
|
+
'/accel/mapping/some/path'
|
28
32
|
end
|
29
33
|
|
30
34
|
it 'contains Sendfile headers' do
|
@@ -33,9 +37,9 @@ describe Rack::Sendfile do
|
|
33
37
|
end
|
34
38
|
end
|
35
39
|
|
36
|
-
context do
|
37
|
-
let(:
|
38
|
-
double(:
|
40
|
+
context 'when streaming non file content' do
|
41
|
+
let(:file_object) do
|
42
|
+
double(:file_object, each: nil)
|
39
43
|
end
|
40
44
|
|
41
45
|
it 'not contains Sendfile headers' do
|
@@ -36,7 +36,7 @@ describe Grape::Middleware::Auth::Strategies do
|
|
36
36
|
RSpec::Matchers.define :be_challenge do
|
37
37
|
match do |actual_response|
|
38
38
|
actual_response.status == 401 &&
|
39
|
-
actual_response['WWW-Authenticate']
|
39
|
+
actual_response['WWW-Authenticate'].start_with?('Digest ') &&
|
40
40
|
actual_response.body.empty?
|
41
41
|
end
|
42
42
|
end
|
@@ -380,7 +380,7 @@ describe Grape::Middleware::Formatter do
|
|
380
380
|
|
381
381
|
context 'send file' do
|
382
382
|
let(:file) { double(File) }
|
383
|
-
let(:file_body) { Grape::
|
383
|
+
let(:file_body) { Grape::ServeStream::StreamResponse.new(file) }
|
384
384
|
let(:app) { ->(_env) { [200, {}, file_body] } }
|
385
385
|
|
386
386
|
it 'returns a file response' do
|
@@ -8,6 +8,18 @@ describe Grape::Validations::Types::PrimitiveCoercer do
|
|
8
8
|
subject { described_class.new(type, strict) }
|
9
9
|
|
10
10
|
describe '#call' do
|
11
|
+
context 'BigDecimal' do
|
12
|
+
let(:type) { BigDecimal }
|
13
|
+
|
14
|
+
it 'coerces to BigDecimal' do
|
15
|
+
expect(subject.call(5)).to eq(BigDecimal(5))
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'coerces an empty string to nil' do
|
19
|
+
expect(subject.call('')).to be_nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
11
23
|
context 'Boolean' do
|
12
24
|
let(:type) { Grape::API::Boolean }
|
13
25
|
|
@@ -32,19 +44,63 @@ describe Grape::Validations::Types::PrimitiveCoercer do
|
|
32
44
|
end
|
33
45
|
end
|
34
46
|
|
47
|
+
context 'DateTime' do
|
48
|
+
let(:type) { DateTime }
|
49
|
+
|
50
|
+
it 'coerces an empty string to nil' do
|
51
|
+
expect(subject.call('')).to be_nil
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
context 'Float' do
|
56
|
+
let(:type) { Float }
|
57
|
+
|
58
|
+
it 'coerces an empty string to nil' do
|
59
|
+
expect(subject.call('')).to be_nil
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
context 'Integer' do
|
64
|
+
let(:type) { Integer }
|
65
|
+
|
66
|
+
it 'coerces an empty string to nil' do
|
67
|
+
expect(subject.call('')).to be_nil
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
context 'Numeric' do
|
72
|
+
let(:type) { Numeric }
|
73
|
+
|
74
|
+
it 'coerces an empty string to nil' do
|
75
|
+
expect(subject.call('')).to be_nil
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
context 'Time' do
|
80
|
+
let(:type) { Time }
|
81
|
+
|
82
|
+
it 'coerces an empty string to nil' do
|
83
|
+
expect(subject.call('')).to be_nil
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
35
87
|
context 'String' do
|
36
88
|
let(:type) { String }
|
37
89
|
|
38
90
|
it 'coerces to String' do
|
39
91
|
expect(subject.call(10)).to eq('10')
|
40
92
|
end
|
93
|
+
|
94
|
+
it 'does not coerce an empty string to nil' do
|
95
|
+
expect(subject.call('')).to eq('')
|
96
|
+
end
|
41
97
|
end
|
42
98
|
|
43
|
-
context '
|
44
|
-
let(:type) {
|
99
|
+
context 'Symbol' do
|
100
|
+
let(:type) { Symbol }
|
45
101
|
|
46
|
-
it 'coerces to
|
47
|
-
expect(subject.call(
|
102
|
+
it 'coerces an empty string to nil' do
|
103
|
+
expect(subject.call('')).to be_nil
|
48
104
|
end
|
49
105
|
end
|
50
106
|
|
@@ -497,6 +497,92 @@ describe Grape::Validations::CoerceValidator do
|
|
497
497
|
end
|
498
498
|
end
|
499
499
|
end
|
500
|
+
|
501
|
+
context 'empty string' do
|
502
|
+
context 'primitive types' do
|
503
|
+
(Grape::Validations::Types::PRIMITIVES - [String]).each do |type|
|
504
|
+
it "is coerced to nil for type #{type}" do
|
505
|
+
subject.params do
|
506
|
+
requires :param, type: type
|
507
|
+
end
|
508
|
+
subject.get '/empty_string' do
|
509
|
+
params[:param].class
|
510
|
+
end
|
511
|
+
|
512
|
+
get '/empty_string', param: ''
|
513
|
+
expect(last_response.status).to eq(200)
|
514
|
+
expect(last_response.body).to eq('NilClass')
|
515
|
+
end
|
516
|
+
end
|
517
|
+
|
518
|
+
it 'is not coerced to nil for type String' do
|
519
|
+
subject.params do
|
520
|
+
requires :param, type: String
|
521
|
+
end
|
522
|
+
subject.get '/empty_string' do
|
523
|
+
params[:param].class
|
524
|
+
end
|
525
|
+
|
526
|
+
get '/empty_string', param: ''
|
527
|
+
expect(last_response.status).to eq(200)
|
528
|
+
expect(last_response.body).to eq('String')
|
529
|
+
end
|
530
|
+
end
|
531
|
+
|
532
|
+
context 'structures types' do
|
533
|
+
(Grape::Validations::Types::STRUCTURES - [Hash]).each do |type|
|
534
|
+
it "is coerced to nil for type #{type}" do
|
535
|
+
subject.params do
|
536
|
+
requires :param, type: type
|
537
|
+
end
|
538
|
+
subject.get '/empty_string' do
|
539
|
+
params[:param].class
|
540
|
+
end
|
541
|
+
|
542
|
+
get '/empty_string', param: ''
|
543
|
+
expect(last_response.status).to eq(200)
|
544
|
+
expect(last_response.body).to eq('NilClass')
|
545
|
+
end
|
546
|
+
end
|
547
|
+
end
|
548
|
+
|
549
|
+
context 'special types' do
|
550
|
+
(Grape::Validations::Types::SPECIAL.keys - [File, Rack::Multipart::UploadedFile]).each do |type|
|
551
|
+
it "is coerced to nil for type #{type}" do
|
552
|
+
subject.params do
|
553
|
+
requires :param, type: type
|
554
|
+
end
|
555
|
+
subject.get '/empty_string' do
|
556
|
+
params[:param].class
|
557
|
+
end
|
558
|
+
|
559
|
+
get '/empty_string', param: ''
|
560
|
+
expect(last_response.status).to eq(200)
|
561
|
+
expect(last_response.body).to eq('NilClass')
|
562
|
+
end
|
563
|
+
end
|
564
|
+
|
565
|
+
context 'variant-member-type collections' do
|
566
|
+
[
|
567
|
+
Array[Integer, String],
|
568
|
+
[Integer, String, Array[Integer, String]]
|
569
|
+
].each do |type|
|
570
|
+
it "is coerced to nil for type #{type}" do
|
571
|
+
subject.params do
|
572
|
+
requires :param, type: type
|
573
|
+
end
|
574
|
+
subject.get '/empty_string' do
|
575
|
+
params[:param].class
|
576
|
+
end
|
577
|
+
|
578
|
+
get '/empty_string', param: ''
|
579
|
+
expect(last_response.status).to eq(200)
|
580
|
+
expect(last_response.body).to eq('NilClass')
|
581
|
+
end
|
582
|
+
end
|
583
|
+
end
|
584
|
+
end
|
585
|
+
end
|
500
586
|
end
|
501
587
|
|
502
588
|
context 'using coerce_with' do
|
@@ -9,6 +9,10 @@ describe Grape::Validations do
|
|
9
9
|
subject
|
10
10
|
end
|
11
11
|
|
12
|
+
def declared_params
|
13
|
+
subject.namespace_stackable(:declared_params).flatten
|
14
|
+
end
|
15
|
+
|
12
16
|
describe 'params' do
|
13
17
|
context 'optional' do
|
14
18
|
before do
|
@@ -41,7 +45,7 @@ describe Grape::Validations do
|
|
41
45
|
subject.params do
|
42
46
|
optional :some_param
|
43
47
|
end
|
44
|
-
expect(
|
48
|
+
expect(declared_params).to eq([:some_param])
|
45
49
|
end
|
46
50
|
end
|
47
51
|
|
@@ -61,7 +65,7 @@ describe Grape::Validations do
|
|
61
65
|
|
62
66
|
it 'adds entity documentation to declared params' do
|
63
67
|
define_optional_using
|
64
|
-
expect(
|
68
|
+
expect(declared_params).to eq(%i[field_a field_b])
|
65
69
|
end
|
66
70
|
|
67
71
|
it 'works when field_a and field_b are not present' do
|
@@ -108,7 +112,7 @@ describe Grape::Validations do
|
|
108
112
|
subject.params do
|
109
113
|
requires :some_param
|
110
114
|
end
|
111
|
-
expect(
|
115
|
+
expect(declared_params).to eq([:some_param])
|
112
116
|
end
|
113
117
|
|
114
118
|
it 'works when required field is present but nil' do
|
@@ -193,7 +197,7 @@ describe Grape::Validations do
|
|
193
197
|
|
194
198
|
it 'adds entity documentation to declared params' do
|
195
199
|
define_requires_all
|
196
|
-
expect(
|
200
|
+
expect(declared_params).to eq(%i[required_field optional_field])
|
197
201
|
end
|
198
202
|
|
199
203
|
it 'errors when required_field is not present' do
|
@@ -228,7 +232,7 @@ describe Grape::Validations do
|
|
228
232
|
|
229
233
|
it 'adds entity documentation to declared params' do
|
230
234
|
define_requires_none
|
231
|
-
expect(
|
235
|
+
expect(declared_params).to eq(%i[required_field optional_field])
|
232
236
|
end
|
233
237
|
|
234
238
|
it 'errors when required_field is not present' do
|
@@ -258,7 +262,7 @@ describe Grape::Validations do
|
|
258
262
|
|
259
263
|
it 'adds only the entity documentation to declared params, nothing more' do
|
260
264
|
define_requires_all
|
261
|
-
expect(
|
265
|
+
expect(declared_params).to eq(%i[required_field optional_field])
|
262
266
|
end
|
263
267
|
end
|
264
268
|
|
@@ -324,7 +328,7 @@ describe Grape::Validations do
|
|
324
328
|
requires :key
|
325
329
|
end
|
326
330
|
end
|
327
|
-
expect(
|
331
|
+
expect(declared_params).to eq([items: [:key]])
|
328
332
|
end
|
329
333
|
end
|
330
334
|
|
@@ -396,7 +400,7 @@ describe Grape::Validations do
|
|
396
400
|
requires :key
|
397
401
|
end
|
398
402
|
end
|
399
|
-
expect(
|
403
|
+
expect(declared_params).to eq([items: [:key]])
|
400
404
|
end
|
401
405
|
end
|
402
406
|
|
@@ -459,7 +463,7 @@ describe Grape::Validations do
|
|
459
463
|
requires :key
|
460
464
|
end
|
461
465
|
end
|
462
|
-
expect(
|
466
|
+
expect(declared_params).to eq([items: [:key]])
|
463
467
|
end
|
464
468
|
end
|
465
469
|
|
@@ -813,7 +817,7 @@ describe Grape::Validations do
|
|
813
817
|
requires :key
|
814
818
|
end
|
815
819
|
end
|
816
|
-
expect(
|
820
|
+
expect(declared_params).to eq([items: [:key]])
|
817
821
|
end
|
818
822
|
end
|
819
823
|
|
@@ -877,7 +881,7 @@ describe Grape::Validations do
|
|
877
881
|
requires(:required_subitems, type: Array) { requires :value }
|
878
882
|
end
|
879
883
|
end
|
880
|
-
expect(
|
884
|
+
expect(declared_params).to eq([items: [:key, { optional_subitems: [:value] }, { required_subitems: [:value] }]])
|
881
885
|
end
|
882
886
|
end
|
883
887
|
|
@@ -1122,14 +1126,14 @@ describe Grape::Validations do
|
|
1122
1126
|
subject.params do
|
1123
1127
|
use :pagination
|
1124
1128
|
end
|
1125
|
-
expect(
|
1129
|
+
expect(declared_params).to eq %i[page per_page]
|
1126
1130
|
end
|
1127
1131
|
|
1128
1132
|
it 'by #use with multiple params' do
|
1129
1133
|
subject.params do
|
1130
1134
|
use :pagination, :period
|
1131
1135
|
end
|
1132
|
-
expect(
|
1136
|
+
expect(declared_params).to eq %i[page per_page start_date end_date]
|
1133
1137
|
end
|
1134
1138
|
end
|
1135
1139
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', '..', 'lib'))
|
4
|
+
require 'grape'
|
5
|
+
|
6
|
+
describe Grape do
|
7
|
+
it 'eager_load!' do
|
8
|
+
require 'grape/eager_load'
|
9
|
+
expect { Grape.eager_load! }.to_not raise_error
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'compile!' do
|
13
|
+
expect { Class.new(Grape::API).compile! }.to_not raise_error
|
14
|
+
end
|
15
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grape
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Bleigh
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-07-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -197,9 +197,9 @@ files:
|
|
197
197
|
- lib/grape/router/attribute_translator.rb
|
198
198
|
- lib/grape/router/pattern.rb
|
199
199
|
- lib/grape/router/route.rb
|
200
|
-
- lib/grape/
|
201
|
-
- lib/grape/
|
202
|
-
- lib/grape/
|
200
|
+
- lib/grape/serve_stream/file_body.rb
|
201
|
+
- lib/grape/serve_stream/sendfile_response.rb
|
202
|
+
- lib/grape/serve_stream/stream_response.rb
|
203
203
|
- lib/grape/util/base_inheritable.rb
|
204
204
|
- lib/grape/util/cache.rb
|
205
205
|
- lib/grape/util/endpoint_configuration.rb
|
@@ -350,6 +350,7 @@ files:
|
|
350
350
|
- spec/grape/validations/validators/values_spec.rb
|
351
351
|
- spec/grape/validations/validators/zh-CN.yml
|
352
352
|
- spec/grape/validations_spec.rb
|
353
|
+
- spec/integration/eager_load/eager_load_spec.rb
|
353
354
|
- spec/integration/multi_json/json_spec.rb
|
354
355
|
- spec/integration/multi_xml/xml_spec.rb
|
355
356
|
- spec/shared/versioning_examples.rb
|
@@ -366,10 +367,10 @@ licenses:
|
|
366
367
|
- MIT
|
367
368
|
metadata:
|
368
369
|
bug_tracker_uri: https://github.com/ruby-grape/grape/issues
|
369
|
-
changelog_uri: https://github.com/ruby-grape/grape/blob/v1.
|
370
|
-
documentation_uri: https://www.rubydoc.info/gems/grape/1.
|
371
|
-
source_code_uri: https://github.com/ruby-grape/grape/tree/v1.
|
372
|
-
post_install_message:
|
370
|
+
changelog_uri: https://github.com/ruby-grape/grape/blob/v1.4.0/CHANGELOG.md
|
371
|
+
documentation_uri: https://www.rubydoc.info/gems/grape/1.4.0
|
372
|
+
source_code_uri: https://github.com/ruby-grape/grape/tree/v1.4.0
|
373
|
+
post_install_message:
|
373
374
|
rdoc_options: []
|
374
375
|
require_paths:
|
375
376
|
- lib
|
@@ -384,120 +385,121 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
384
385
|
- !ruby/object:Gem::Version
|
385
386
|
version: '0'
|
386
387
|
requirements: []
|
387
|
-
rubygems_version: 3.
|
388
|
-
signing_key:
|
388
|
+
rubygems_version: 3.1.3
|
389
|
+
signing_key:
|
389
390
|
specification_version: 4
|
390
391
|
summary: A simple Ruby framework for building REST-like APIs.
|
391
392
|
test_files:
|
393
|
+
- spec/spec_helper.rb
|
394
|
+
- spec/integration/eager_load/eager_load_spec.rb
|
395
|
+
- spec/integration/multi_xml/xml_spec.rb
|
396
|
+
- spec/integration/multi_json/json_spec.rb
|
392
397
|
- spec/shared/versioning_examples.rb
|
398
|
+
- spec/support/basic_auth_encode_helpers.rb
|
399
|
+
- spec/support/endpoint_faker.rb
|
400
|
+
- spec/support/file_streamer.rb
|
393
401
|
- spec/support/versioned_helpers.rb
|
394
402
|
- spec/support/content_type_helpers.rb
|
395
403
|
- spec/support/eager_load.rb
|
396
|
-
- spec/support/basic_auth_encode_helpers.rb
|
397
|
-
- spec/support/file_streamer.rb
|
398
|
-
- spec/support/endpoint_faker.rb
|
399
404
|
- spec/support/integer_helpers.rb
|
400
|
-
- spec/grape/
|
401
|
-
- spec/grape/
|
402
|
-
- spec/grape/
|
403
|
-
- spec/grape/
|
404
|
-
- spec/grape/
|
405
|
-
- spec/grape/
|
406
|
-
- spec/grape/
|
407
|
-
- spec/grape/
|
408
|
-
- spec/grape/
|
409
|
-
- spec/grape/
|
410
|
-
- spec/grape/
|
411
|
-
- spec/grape/
|
412
|
-
- spec/grape/
|
413
|
-
- spec/grape/
|
414
|
-
- spec/grape/
|
415
|
-
- spec/grape/
|
416
|
-
- spec/grape/
|
417
|
-
- spec/grape/
|
418
|
-
- spec/grape/
|
405
|
+
- spec/grape/middleware/error_spec.rb
|
406
|
+
- spec/grape/middleware/globals_spec.rb
|
407
|
+
- spec/grape/middleware/formatter_spec.rb
|
408
|
+
- spec/grape/middleware/auth/strategies_spec.rb
|
409
|
+
- spec/grape/middleware/auth/dsl_spec.rb
|
410
|
+
- spec/grape/middleware/auth/base_spec.rb
|
411
|
+
- spec/grape/middleware/stack_spec.rb
|
412
|
+
- spec/grape/middleware/exception_spec.rb
|
413
|
+
- spec/grape/middleware/versioner_spec.rb
|
414
|
+
- spec/grape/middleware/versioner/accept_version_header_spec.rb
|
415
|
+
- spec/grape/middleware/versioner/header_spec.rb
|
416
|
+
- spec/grape/middleware/versioner/path_spec.rb
|
417
|
+
- spec/grape/middleware/versioner/param_spec.rb
|
418
|
+
- spec/grape/middleware/base_spec.rb
|
419
|
+
- spec/grape/config_spec.rb
|
420
|
+
- spec/grape/loading_spec.rb
|
421
|
+
- spec/grape/endpoint_spec.rb
|
422
|
+
- spec/grape/api_spec.rb
|
423
|
+
- spec/grape/util/reverse_stackable_values_spec.rb
|
424
|
+
- spec/grape/util/stackable_values_spec.rb
|
425
|
+
- spec/grape/util/inheritable_setting_spec.rb
|
426
|
+
- spec/grape/util/strict_hash_configuration_spec.rb
|
427
|
+
- spec/grape/util/inheritable_values_spec.rb
|
428
|
+
- spec/grape/integration/rack_spec.rb
|
429
|
+
- spec/grape/integration/rack_sendfile_spec.rb
|
430
|
+
- spec/grape/integration/global_namespace_function_spec.rb
|
431
|
+
- spec/grape/validations_spec.rb
|
432
|
+
- spec/grape/entity_spec.rb
|
433
|
+
- spec/grape/exceptions/validation_spec.rb
|
434
|
+
- spec/grape/exceptions/invalid_accept_header_spec.rb
|
435
|
+
- spec/grape/exceptions/missing_option_spec.rb
|
436
|
+
- spec/grape/exceptions/invalid_response_spec.rb
|
437
|
+
- spec/grape/exceptions/body_parse_errors_spec.rb
|
438
|
+
- spec/grape/exceptions/invalid_formatter_spec.rb
|
439
|
+
- spec/grape/exceptions/missing_mime_type_spec.rb
|
440
|
+
- spec/grape/exceptions/unknown_options_spec.rb
|
441
|
+
- spec/grape/exceptions/validation_errors_spec.rb
|
442
|
+
- spec/grape/exceptions/unknown_validator_spec.rb
|
443
|
+
- spec/grape/exceptions/invalid_versioner_option_spec.rb
|
444
|
+
- spec/grape/exceptions/base_spec.rb
|
445
|
+
- spec/grape/presenters/presenter_spec.rb
|
446
|
+
- spec/grape/validations/single_attribute_iterator_spec.rb
|
419
447
|
- spec/grape/validations/attributes_iterator_spec.rb
|
420
|
-
- spec/grape/validations/types/array_coercer_spec.rb
|
421
|
-
- spec/grape/validations/types/set_coercer_spec.rb
|
422
448
|
- spec/grape/validations/types/primitive_coercer_spec.rb
|
449
|
+
- spec/grape/validations/types/set_coercer_spec.rb
|
450
|
+
- spec/grape/validations/types/array_coercer_spec.rb
|
451
|
+
- spec/grape/validations/params_scope_spec.rb
|
452
|
+
- spec/grape/validations/instance_behaivour_spec.rb
|
453
|
+
- spec/grape/validations/multiple_attributes_iterator_spec.rb
|
454
|
+
- spec/grape/validations/types_spec.rb
|
423
455
|
- spec/grape/validations/validators/regexp_spec.rb
|
424
|
-
- spec/grape/validations/validators/default_spec.rb
|
425
|
-
- spec/grape/validations/validators/values_spec.rb
|
426
|
-
- spec/grape/validations/validators/same_as_spec.rb
|
427
456
|
- spec/grape/validations/validators/mutual_exclusion_spec.rb
|
428
|
-
- spec/grape/validations/validators/except_values_spec.rb
|
429
457
|
- spec/grape/validations/validators/exactly_one_of_spec.rb
|
430
|
-
- spec/grape/validations/validators/
|
431
|
-
- spec/grape/validations/validators/coerce_spec.rb
|
458
|
+
- spec/grape/validations/validators/except_values_spec.rb
|
432
459
|
- spec/grape/validations/validators/presence_spec.rb
|
460
|
+
- spec/grape/validations/validators/all_or_none_spec.rb
|
461
|
+
- spec/grape/validations/validators/allow_blank_spec.rb
|
462
|
+
- spec/grape/validations/validators/same_as_spec.rb
|
463
|
+
- spec/grape/validations/validators/default_spec.rb
|
464
|
+
- spec/grape/validations/validators/values_spec.rb
|
433
465
|
- spec/grape/validations/validators/at_least_one_of_spec.rb
|
466
|
+
- spec/grape/validations/validators/coerce_spec.rb
|
434
467
|
- spec/grape/validations/validators/zh-CN.yml
|
435
|
-
- spec/grape/validations/validators/all_or_none_spec.rb
|
436
|
-
- spec/grape/validations/params_scope_spec.rb
|
437
|
-
- spec/grape/validations/multiple_attributes_iterator_spec.rb
|
438
|
-
- spec/grape/validations/instance_behaivour_spec.rb
|
439
|
-
- spec/grape/validations/single_attribute_iterator_spec.rb
|
440
|
-
- spec/grape/config_spec.rb
|
441
|
-
- spec/grape/parser_spec.rb
|
442
|
-
- spec/grape/exceptions/body_parse_errors_spec.rb
|
443
|
-
- spec/grape/exceptions/missing_option_spec.rb
|
444
|
-
- spec/grape/exceptions/invalid_accept_header_spec.rb
|
445
|
-
- spec/grape/exceptions/validation_spec.rb
|
446
|
-
- spec/grape/exceptions/unknown_validator_spec.rb
|
447
|
-
- spec/grape/exceptions/validation_errors_spec.rb
|
448
|
-
- spec/grape/exceptions/invalid_response_spec.rb
|
449
|
-
- spec/grape/exceptions/unknown_options_spec.rb
|
450
|
-
- spec/grape/exceptions/invalid_formatter_spec.rb
|
451
|
-
- spec/grape/exceptions/invalid_versioner_option_spec.rb
|
452
|
-
- spec/grape/exceptions/missing_mime_type_spec.rb
|
453
|
-
- spec/grape/exceptions/base_spec.rb
|
454
|
-
- spec/grape/path_spec.rb
|
455
|
-
- spec/grape/util/stackable_values_spec.rb
|
456
|
-
- spec/grape/util/strict_hash_configuration_spec.rb
|
457
|
-
- spec/grape/util/inheritable_setting_spec.rb
|
458
|
-
- spec/grape/util/reverse_stackable_values_spec.rb
|
459
|
-
- spec/grape/util/inheritable_values_spec.rb
|
460
|
-
- spec/grape/extensions/param_builders/hash_with_indifferent_access_spec.rb
|
461
|
-
- spec/grape/extensions/param_builders/hash_spec.rb
|
462
468
|
- spec/grape/extensions/param_builders/hashie/mash_spec.rb
|
463
|
-
- spec/grape/
|
464
|
-
- spec/grape/
|
465
|
-
- spec/grape/
|
466
|
-
- spec/grape/
|
467
|
-
- spec/grape/
|
468
|
-
- spec/grape/
|
469
|
-
- spec/grape/
|
470
|
-
- spec/grape/
|
471
|
-
- spec/grape/
|
472
|
-
- spec/grape/
|
473
|
-
- spec/grape/
|
474
|
-
- spec/grape/
|
475
|
-
- spec/grape/
|
476
|
-
- spec/grape/
|
477
|
-
- spec/grape/
|
478
|
-
- spec/grape/
|
479
|
-
- spec/grape/
|
480
|
-
- spec/grape/
|
481
|
-
- spec/grape/
|
482
|
-
- spec/grape/
|
483
|
-
- spec/grape/
|
484
|
-
- spec/grape/
|
485
|
-
- spec/grape/
|
486
|
-
- spec/grape/dsl/
|
487
|
-
- spec/grape/dsl/
|
469
|
+
- spec/grape/extensions/param_builders/hash_spec.rb
|
470
|
+
- spec/grape/extensions/param_builders/hash_with_indifferent_access_spec.rb
|
471
|
+
- spec/grape/parser_spec.rb
|
472
|
+
- spec/grape/request_spec.rb
|
473
|
+
- spec/grape/api/parameters_modification_spec.rb
|
474
|
+
- spec/grape/api/patch_method_helpers_spec.rb
|
475
|
+
- spec/grape/api/required_parameters_with_invalid_method_spec.rb
|
476
|
+
- spec/grape/api/nested_helpers_spec.rb
|
477
|
+
- spec/grape/api/defines_boolean_in_params_spec.rb
|
478
|
+
- spec/grape/api/invalid_format_spec.rb
|
479
|
+
- spec/grape/api/required_parameters_in_route_spec.rb
|
480
|
+
- spec/grape/api/instance_spec.rb
|
481
|
+
- spec/grape/api/namespace_parameters_in_route_spec.rb
|
482
|
+
- spec/grape/api/recognize_path_spec.rb
|
483
|
+
- spec/grape/api/shared_helpers_exactly_one_of_spec.rb
|
484
|
+
- spec/grape/api/inherited_helpers_spec.rb
|
485
|
+
- spec/grape/api/shared_helpers_spec.rb
|
486
|
+
- spec/grape/api/deeply_included_options_spec.rb
|
487
|
+
- spec/grape/api/routes_with_requirements_spec.rb
|
488
|
+
- spec/grape/api/custom_validations_spec.rb
|
489
|
+
- spec/grape/api/optional_parameters_in_route_spec.rb
|
490
|
+
- spec/grape/api_remount_spec.rb
|
491
|
+
- spec/grape/named_api_spec.rb
|
492
|
+
- spec/grape/dsl/request_response_spec.rb
|
493
|
+
- spec/grape/dsl/desc_spec.rb
|
494
|
+
- spec/grape/dsl/logger_spec.rb
|
488
495
|
- spec/grape/dsl/configuration_spec.rb
|
496
|
+
- spec/grape/dsl/validations_spec.rb
|
489
497
|
- spec/grape/dsl/parameters_spec.rb
|
490
|
-
- spec/grape/dsl/logger_spec.rb
|
491
498
|
- spec/grape/dsl/helpers_spec.rb
|
492
|
-
- spec/grape/dsl/
|
493
|
-
- spec/grape/dsl/routing_spec.rb
|
499
|
+
- spec/grape/dsl/middleware_spec.rb
|
494
500
|
- spec/grape/dsl/headers_spec.rb
|
495
|
-
- spec/grape/dsl/
|
496
|
-
- spec/grape/dsl/
|
497
|
-
- spec/grape/
|
498
|
-
- spec/grape/
|
499
|
-
- spec/grape/
|
500
|
-
- spec/grape/request_spec.rb
|
501
|
-
- spec/integration/multi_xml/xml_spec.rb
|
502
|
-
- spec/integration/multi_json/json_spec.rb
|
503
|
-
- spec/spec_helper.rb
|
501
|
+
- spec/grape/dsl/callbacks_spec.rb
|
502
|
+
- spec/grape/dsl/settings_spec.rb
|
503
|
+
- spec/grape/dsl/routing_spec.rb
|
504
|
+
- spec/grape/dsl/inside_route_spec.rb
|
505
|
+
- spec/grape/path_spec.rb
|