grape 1.2.1 → 1.2.2

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.
data/README.md CHANGED
@@ -146,9 +146,8 @@ content negotiation, versioning and much more.
146
146
 
147
147
  ## Stable Release
148
148
 
149
- You're reading the documentation for the next release of Grape, which should be **1.2.2**.
149
+ You're reading the documentation for the stable release of Grape, **1.2.2**.
150
150
  Please read [UPGRADING](UPGRADING.md) when upgrading from a previous version.
151
- The current stable release is [1.2.1](https://github.com/ruby-grape/grape/blob/v1.2.1/README.md).
152
151
 
153
152
  ## Project Resources
154
153
 
@@ -36,7 +36,7 @@ You're reading the documentation for the stable release of Grape, 0.6.0.
36
36
  Change "Next Release" in [CHANGELOG.md](CHANGELOG.md) to the new version.
37
37
 
38
38
  ```
39
- #### 0.6.0 (9/16/2013)
39
+ #### 0.6.0 (2013/9/16)
40
40
  ```
41
41
 
42
42
  Remove the line with "Your contribution here.", since there will be no more contributions to this release.
@@ -6,12 +6,16 @@ module Grape
6
6
  # should subclass this class in order to build an API.
7
7
  class API
8
8
  # Class methods that we want to call on the API rather than on the API object
9
- NON_OVERRIDABLE = %I[define_singleton_method instance_variable_set inspect class is_a? ! kind_of?
10
- respond_to? respond_to_missing? const_defined? const_missing parent
11
- parent_name name equal? to_s parents anonymous?].freeze
9
+ NON_OVERRIDABLE = (Class.new.methods + %i[call call!]).freeze
12
10
 
13
11
  class << self
14
12
  attr_accessor :base_instance, :instances
13
+
14
+ # Rather than initializing an object of type Grape::API, create an object of type Instance
15
+ def new(*args, &block)
16
+ base_instance.new(*args, &block)
17
+ end
18
+
15
19
  # When inherited, will create a list of all instances (times the API was mounted)
16
20
  # It will listen to the setup required to mount that endpoint, and replicate it on any new instance
17
21
  def inherited(api, base_instance_parent = Grape::API::Instance)
@@ -38,6 +42,15 @@ module Grape
38
42
  end
39
43
  end
40
44
 
45
+ # This is the interface point between Rack and Grape; it accepts a request
46
+ # from Rack and ultimately returns an array of three values: the status,
47
+ # the headers, and the body. See [the rack specification]
48
+ # (http://www.rubydoc.info/github/rack/rack/master/file/SPEC) for more.
49
+ # NOTE: This will only be called on an API directly mounted on RACK
50
+ def call(*args, &block)
51
+ base_instance.call(*args, &block)
52
+ end
53
+
41
54
  # Allows an API to itself be inheritable:
42
55
  def make_inheritable(api)
43
56
  # When a child API inherits from a parent API.
@@ -183,7 +183,7 @@ module Grape
183
183
  # informations again.
184
184
  without_root_prefix do
185
185
  without_versioning do
186
- routes_map.each do |_, config|
186
+ routes_map.each_value do |config|
187
187
  methods = config[:methods]
188
188
  allowed_methods = methods.dup
189
189
 
@@ -4,12 +4,12 @@ module Grape
4
4
  include Grape::DSL::Settings
5
5
 
6
6
  # Add a description to the next namespace or function.
7
- # @option options :summary [String] summary for this endpoint
8
7
  # @param description [String] descriptive string for this endpoint
9
8
  # or namespace
10
9
  # @param options [Hash] other properties you can set to describe the
11
10
  # endpoint or namespace. Optional.
12
11
  # @option options :detail [String] additional detail about this endpoint
12
+ # @option options :summary [String] summary for this endpoint
13
13
  # @option options :params [Hash] param types and info. normally, you set
14
14
  # these via the `params` dsl method.
15
15
  # @option options :entity [Grape::Entity] the entity returned upon a
@@ -17,6 +17,7 @@ module Grape
17
17
  # @option options :http_codes [Array[Array]] possible HTTP codes this
18
18
  # endpoint may return, with their meanings, in a 2d array
19
19
  # @option options :named [String] a specific name to help find this route
20
+ # @option options :body_name [String] override the autogenerated body name param
20
21
  # @option options :headers [Hash] HTTP headers this method can accept
21
22
  # @option options :hidden [Boolean] hide the endpoint or not
22
23
  # @option options :deprecated [Boolean] deprecate the endpoint or not
@@ -24,6 +25,7 @@ module Grape
24
25
  # @option options :nickname [String] nickname of the endpoint
25
26
  # @option options :produces [Array[String]] a list of MIME types the endpoint produce
26
27
  # @option options :consumes [Array[String]] a list of MIME types the endpoint consume
28
+ # @option options :security [Array[Hash]] a list of security schemes
27
29
  # @option options :tags [Array[String]] a list of tags
28
30
  # @yield a block yielding an instance context with methods mapping to
29
31
  # each of the above, except that :entity is also aliased as #success
@@ -67,13 +69,12 @@ module Grape
67
69
  end
68
70
 
69
71
  def description_field(field, value = nil)
72
+ description = route_setting(:description)
70
73
  if value
71
- description = route_setting(:description)
72
74
  description ||= route_setting(:description, {})
73
75
  description[field] = value
74
- else
75
- description = route_setting(:description)
76
- description[field] if description
76
+ elsif description
77
+ description[field]
77
78
  end
78
79
  end
79
80
 
@@ -93,6 +94,7 @@ module Grape
93
94
  :entity,
94
95
  :http_codes,
95
96
  :named,
97
+ :body_name,
96
98
  :headers,
97
99
  :hidden,
98
100
  :deprecated,
@@ -100,6 +102,7 @@ module Grape
100
102
  :nickname,
101
103
  :produces,
102
104
  :consumes,
105
+ :security,
103
106
  :tags
104
107
  )
105
108
 
@@ -96,7 +96,7 @@ module Grape
96
96
  # @param [Array] other_specs An array of middleware specifications (e.g. [[:use, klass], [:insert_before, *args]])
97
97
  def concat(other_specs)
98
98
  @others << Array(other_specs).reject { |o| o.first == :use }
99
- merge_with Array(other_specs).select { |o| o.first == :use }
99
+ merge_with(Array(other_specs).select { |o| o.first == :use })
100
100
  end
101
101
 
102
102
  protected
@@ -99,7 +99,7 @@ module Grape
99
99
  def available_media_types
100
100
  available_media_types = []
101
101
 
102
- content_types.each do |extension, _media_type|
102
+ content_types.each_key do |extension|
103
103
  versions.reverse_each do |version|
104
104
  available_media_types += [
105
105
  "application/vnd.#{vendor}-#{version}+#{extension}",
@@ -111,7 +111,7 @@ module Grape
111
111
 
112
112
  available_media_types << "application/vnd.#{vendor}"
113
113
 
114
- content_types.each do |_, media_type|
114
+ content_types.each_value do |media_type|
115
115
  available_media_types << media_type
116
116
  end
117
117
 
@@ -15,6 +15,8 @@ module Grape
15
15
  @attributes[m[0..-1]] = *args
16
16
  elsif m[-1] != '='
17
17
  @attributes[m]
18
+ else
19
+ super
18
20
  end
19
21
  end
20
22
 
@@ -98,9 +98,9 @@ module Grape
98
98
  path, line = *location.scan(SOURCE_LOCATION_REGEXP).first
99
99
  path = File.realpath(path) if Pathname.new(path).relative?
100
100
  expected ||= name
101
- warn <<-EOS
101
+ warn <<-WARNING
102
102
  #{path}:#{line}: The route_xxx methods such as route_#{name} have been deprecated, please use #{expected}.
103
- EOS
103
+ WARNING
104
104
  end
105
105
  end
106
106
  end
@@ -158,7 +158,7 @@ module Grape
158
158
  # necessary.
159
159
  def enforce_symbolized_keys(type, method)
160
160
  # Collections have all values processed individually
161
- if type == Array || type == Set
161
+ if [Array, Set].include?(type)
162
162
  lambda do |val|
163
163
  method.call(val).tap do |new_value|
164
164
  new_value.map do |item|
@@ -1,4 +1,4 @@
1
1
  module Grape
2
2
  # The current version of Grape.
3
- VERSION = '1.2.1'.freeze
3
+ VERSION = '1.2.2'.freeze
4
4
  end
Binary file
Binary file
Binary file
@@ -220,6 +220,15 @@ describe Grape::API do
220
220
  end
221
221
  end
222
222
 
223
+ describe '.call' do
224
+ context 'it does not add to the app setup' do
225
+ it 'calls the app' do
226
+ expect(subject).not_to receive(:add_setup)
227
+ subject.call({})
228
+ end
229
+ end
230
+ end
231
+
223
232
  describe '.route_param' do
224
233
  it 'adds a parameterized route segment namespace' do
225
234
  subject.namespace :users do
@@ -3649,4 +3658,22 @@ XML
3649
3658
  end
3650
3659
  end
3651
3660
  end
3661
+
3662
+ describe 'normal class methods' do
3663
+ subject(:grape_api) { Class.new(Grape::API) }
3664
+
3665
+ before do
3666
+ stub_const('MyAPI', grape_api)
3667
+ end
3668
+
3669
+ it 'can find the appropiate name' do
3670
+ expect(grape_api.name).to eq 'MyAPI'
3671
+ end
3672
+
3673
+ it 'is equal to itself' do
3674
+ expect(grape_api.itself).to eq grape_api
3675
+ expect(grape_api).to eq MyAPI
3676
+ expect(grape_api.eql?(MyAPI))
3677
+ end
3678
+ end
3652
3679
  end
@@ -28,21 +28,25 @@ module Grape
28
28
  entity: Object,
29
29
  http_codes: [[401, 'Unauthorized', 'Entities::Error']],
30
30
  named: 'My named route',
31
- headers: [XAuthToken: {
32
- description: 'Valdates your identity',
33
- required: true
34
- },
35
- XOptionalHeader: {
36
- description: 'Not really needed',
37
- required: false
38
- }],
31
+ body_name: 'My body name',
32
+ headers: [
33
+ XAuthToken: {
34
+ description: 'Valdates your identity',
35
+ required: true
36
+ },
37
+ XOptionalHeader: {
38
+ description: 'Not really needed',
39
+ required: false
40
+ }
41
+ ],
39
42
  hidden: false,
40
43
  deprecated: false,
41
44
  is_array: true,
42
45
  nickname: 'nickname',
43
46
  produces: %w[array of mime_types],
44
47
  consumes: %w[array of mime_types],
45
- tags: %w[tag1 tag2]
48
+ tags: %w[tag1 tag2],
49
+ security: %w[array of security schemes]
46
50
  }
47
51
 
48
52
  subject.desc 'The description' do
@@ -52,14 +56,17 @@ module Grape
52
56
  success Object
53
57
  failure [[401, 'Unauthorized', 'Entities::Error']]
54
58
  named 'My named route'
55
- headers [XAuthToken: {
56
- description: 'Valdates your identity',
57
- required: true
58
- },
59
- XOptionalHeader: {
60
- description: 'Not really needed',
61
- required: false
62
- }]
59
+ body_name 'My body name'
60
+ headers [
61
+ XAuthToken: {
62
+ description: 'Valdates your identity',
63
+ required: true
64
+ },
65
+ XOptionalHeader: {
66
+ description: 'Not really needed',
67
+ required: false
68
+ }
69
+ ]
63
70
  hidden false
64
71
  deprecated false
65
72
  is_array true
@@ -67,6 +74,7 @@ module Grape
67
74
  produces %w[array of mime_types]
68
75
  consumes %w[array of mime_types]
69
76
  tags %w[tag1 tag2]
77
+ security %w[array of security schemes]
70
78
  end
71
79
 
72
80
  expect(subject.namespace_setting(:description)).to eq(expected_options)
@@ -247,7 +247,7 @@ describe Grape::Middleware::Formatter do
247
247
  let(:content_type) { 'application/atom+xml' }
248
248
 
249
249
  it 'returns a 415 HTTP error status' do
250
- error = catch(:error) {
250
+ error = catch(:error) do
251
251
  subject.call(
252
252
  'PATH_INFO' => '/info',
253
253
  'REQUEST_METHOD' => method,
@@ -255,7 +255,7 @@ describe Grape::Middleware::Formatter do
255
255
  'rack.input' => io,
256
256
  'CONTENT_LENGTH' => io.length
257
257
  )
258
- }
258
+ end
259
259
  expect(error[:status]).to eq(415)
260
260
  expect(error[:message]).to eq("The provided content-type 'application/atom+xml' is not supported.")
261
261
  end
@@ -407,7 +407,7 @@ describe Grape::Middleware::Formatter do
407
407
  parsers: { json: ->(_object, _env) { raise StandardError, 'fail' } }
408
408
  )
409
409
  io = StringIO.new('{invalid}')
410
- error = catch(:error) {
410
+ error = catch(:error) do
411
411
  subject.call(
412
412
  'PATH_INFO' => '/info',
413
413
  'REQUEST_METHOD' => 'POST',
@@ -415,7 +415,7 @@ describe Grape::Middleware::Formatter do
415
415
  'rack.input' => io,
416
416
  'CONTENT_LENGTH' => io.length
417
417
  )
418
- }
418
+ end
419
419
 
420
420
  expect(error[:message]).to eq 'fail'
421
421
  expect(error[:backtrace].size).to be >= 1
@@ -1013,7 +1013,7 @@ describe Grape::Validations do
1013
1013
  expect(last_response.body).to eq('custom is not custom with options!')
1014
1014
  end
1015
1015
  end
1016
- end # end custom validation
1016
+ end
1017
1017
 
1018
1018
  context 'named' do
1019
1019
  context 'can be defined' do
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.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Bleigh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-28 00:00:00.000000000 Z
11
+ date: 2018-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -117,14 +117,10 @@ files:
117
117
  - benchmark/simple_with_type_coercer.rb
118
118
  - gemfiles/multi_json.gemfile
119
119
  - gemfiles/multi_xml.gemfile
120
- - gemfiles/rack_1.5.2.gemfile.lock
121
120
  - gemfiles/rack_edge.gemfile
122
121
  - gemfiles/rails_3.gemfile
123
- - gemfiles/rails_3.gemfile.lock
124
122
  - gemfiles/rails_4.gemfile
125
- - gemfiles/rails_4.gemfile.lock
126
123
  - gemfiles/rails_5.gemfile
127
- - gemfiles/rails_5.gemfile.lock
128
124
  - gemfiles/rails_edge.gemfile
129
125
  - grape.gemspec
130
126
  - grape.png
@@ -255,7 +251,9 @@ files:
255
251
  - lib/grape/validations/validators/regexp.rb
256
252
  - lib/grape/validations/validators/values.rb
257
253
  - lib/grape/version.rb
258
- - pkg/grape-1.2.0.gem
254
+ - pkg/grape-0.19.1.gem
255
+ - pkg/grape-1.0.1.gem
256
+ - pkg/grape-1.0.2.gem
259
257
  - spec/grape/api/custom_validations_spec.rb
260
258
  - spec/grape/api/deeply_included_options_spec.rb
261
259
  - spec/grape/api/inherited_helpers_spec.rb
@@ -378,110 +376,110 @@ required_rubygems_version: !ruby/object:Gem::Requirement
378
376
  version: '0'
379
377
  requirements: []
380
378
  rubyforge_project:
381
- rubygems_version: 2.7.7
379
+ rubygems_version: 2.7.6
382
380
  signing_key:
383
381
  specification_version: 4
384
382
  summary: A simple Ruby framework for building REST-like APIs.
385
383
  test_files:
384
+ - spec/spec_helper.rb
385
+ - spec/integration/multi_xml/xml_spec.rb
386
+ - spec/integration/multi_json/json_spec.rb
386
387
  - spec/shared/versioning_examples.rb
387
- - spec/grape/api/shared_helpers_exactly_one_of_spec.rb
388
- - spec/grape/api/custom_validations_spec.rb
389
- - spec/grape/api/parameters_modification_spec.rb
390
- - spec/grape/api/namespace_parameters_in_route_spec.rb
391
- - spec/grape/api/deeply_included_options_spec.rb
392
- - spec/grape/api/shared_helpers_spec.rb
393
- - spec/grape/api/required_parameters_with_invalid_method_spec.rb
394
- - spec/grape/api/inherited_helpers_spec.rb
395
- - spec/grape/api/recognize_path_spec.rb
396
- - spec/grape/api/required_parameters_in_route_spec.rb
397
- - spec/grape/api/nested_helpers_spec.rb
398
- - spec/grape/api/routes_with_requirements_spec.rb
399
- - spec/grape/api/patch_method_helpers_spec.rb
400
- - spec/grape/api/optional_parameters_in_route_spec.rb
401
- - spec/grape/api/invalid_format_spec.rb
402
- - spec/grape/named_api_spec.rb
403
- - spec/grape/exceptions/validation_spec.rb
404
- - spec/grape/exceptions/validation_errors_spec.rb
405
- - spec/grape/exceptions/missing_option_spec.rb
406
- - spec/grape/exceptions/unknown_options_spec.rb
407
- - spec/grape/exceptions/missing_mime_type_spec.rb
408
- - spec/grape/exceptions/base_spec.rb
409
- - spec/grape/exceptions/invalid_versioner_option_spec.rb
410
- - spec/grape/exceptions/invalid_response_spec.rb
411
- - spec/grape/exceptions/body_parse_errors_spec.rb
412
- - spec/grape/exceptions/unknown_validator_spec.rb
413
- - spec/grape/exceptions/invalid_formatter_spec.rb
414
- - spec/grape/exceptions/invalid_accept_header_spec.rb
415
- - spec/grape/dsl/routing_spec.rb
416
- - spec/grape/dsl/logger_spec.rb
417
- - spec/grape/dsl/request_response_spec.rb
418
- - spec/grape/dsl/validations_spec.rb
419
- - spec/grape/dsl/desc_spec.rb
420
- - spec/grape/dsl/headers_spec.rb
421
- - spec/grape/dsl/configuration_spec.rb
422
- - spec/grape/dsl/settings_spec.rb
423
- - spec/grape/dsl/callbacks_spec.rb
424
- - spec/grape/dsl/parameters_spec.rb
425
- - spec/grape/dsl/inside_route_spec.rb
426
- - spec/grape/dsl/middleware_spec.rb
427
- - spec/grape/dsl/helpers_spec.rb
428
- - spec/grape/endpoint_spec.rb
429
- - spec/grape/validations_spec.rb
430
- - spec/grape/entity_spec.rb
431
- - spec/grape/extensions/param_builders/hash_spec.rb
432
- - spec/grape/extensions/param_builders/hash_with_indifferent_access_spec.rb
433
- - spec/grape/extensions/param_builders/hashie/mash_spec.rb
434
- - spec/grape/api_remount_spec.rb
435
- - spec/grape/parser_spec.rb
436
- - spec/grape/util/inheritable_setting_spec.rb
437
- - spec/grape/util/reverse_stackable_values_spec.rb
438
- - spec/grape/util/stackable_values_spec.rb
439
- - spec/grape/util/inheritable_values_spec.rb
440
- - spec/grape/util/strict_hash_configuration_spec.rb
441
- - spec/grape/presenters/presenter_spec.rb
442
- - spec/grape/middleware/versioner/header_spec.rb
443
- - spec/grape/middleware/versioner/accept_version_header_spec.rb
444
- - spec/grape/middleware/versioner/param_spec.rb
445
- - spec/grape/middleware/versioner/path_spec.rb
388
+ - spec/support/basic_auth_encode_helpers.rb
389
+ - spec/support/endpoint_faker.rb
390
+ - spec/support/file_streamer.rb
391
+ - spec/support/versioned_helpers.rb
392
+ - spec/support/content_type_helpers.rb
393
+ - spec/support/integer_helpers.rb
446
394
  - spec/grape/middleware/error_spec.rb
447
395
  - spec/grape/middleware/globals_spec.rb
448
- - spec/grape/middleware/base_spec.rb
449
396
  - spec/grape/middleware/formatter_spec.rb
450
- - spec/grape/middleware/exception_spec.rb
451
- - spec/grape/middleware/auth/base_spec.rb
452
397
  - spec/grape/middleware/auth/strategies_spec.rb
453
398
  - spec/grape/middleware/auth/dsl_spec.rb
399
+ - spec/grape/middleware/auth/base_spec.rb
454
400
  - spec/grape/middleware/stack_spec.rb
401
+ - spec/grape/middleware/exception_spec.rb
455
402
  - spec/grape/middleware/versioner_spec.rb
456
- - spec/grape/request_spec.rb
457
- - spec/grape/integration/global_namespace_function_spec.rb
403
+ - spec/grape/middleware/versioner/accept_version_header_spec.rb
404
+ - spec/grape/middleware/versioner/header_spec.rb
405
+ - spec/grape/middleware/versioner/path_spec.rb
406
+ - spec/grape/middleware/versioner/param_spec.rb
407
+ - spec/grape/middleware/base_spec.rb
408
+ - spec/grape/loading_spec.rb
409
+ - spec/grape/endpoint_spec.rb
410
+ - spec/grape/api_spec.rb
411
+ - spec/grape/util/reverse_stackable_values_spec.rb
412
+ - spec/grape/util/stackable_values_spec.rb
413
+ - spec/grape/util/inheritable_setting_spec.rb
414
+ - spec/grape/util/strict_hash_configuration_spec.rb
415
+ - spec/grape/util/inheritable_values_spec.rb
458
416
  - spec/grape/integration/rack_spec.rb
459
417
  - spec/grape/integration/rack_sendfile_spec.rb
418
+ - spec/grape/integration/global_namespace_function_spec.rb
419
+ - spec/grape/validations_spec.rb
420
+ - spec/grape/entity_spec.rb
421
+ - spec/grape/exceptions/validation_spec.rb
422
+ - spec/grape/exceptions/invalid_accept_header_spec.rb
423
+ - spec/grape/exceptions/missing_option_spec.rb
424
+ - spec/grape/exceptions/invalid_response_spec.rb
425
+ - spec/grape/exceptions/body_parse_errors_spec.rb
426
+ - spec/grape/exceptions/invalid_formatter_spec.rb
427
+ - spec/grape/exceptions/missing_mime_type_spec.rb
428
+ - spec/grape/exceptions/unknown_options_spec.rb
429
+ - spec/grape/exceptions/validation_errors_spec.rb
430
+ - spec/grape/exceptions/unknown_validator_spec.rb
431
+ - spec/grape/exceptions/invalid_versioner_option_spec.rb
432
+ - spec/grape/exceptions/base_spec.rb
433
+ - spec/grape/presenters/presenter_spec.rb
460
434
  - spec/grape/validations/attributes_iterator_spec.rb
435
+ - spec/grape/validations/params_scope_spec.rb
436
+ - spec/grape/validations/instance_behaivour_spec.rb
437
+ - spec/grape/validations/types_spec.rb
438
+ - spec/grape/validations/validators/regexp_spec.rb
439
+ - spec/grape/validations/validators/mutual_exclusion_spec.rb
461
440
  - spec/grape/validations/validators/exactly_one_of_spec.rb
462
- - spec/grape/validations/validators/values_spec.rb
441
+ - spec/grape/validations/validators/except_values_spec.rb
463
442
  - spec/grape/validations/validators/presence_spec.rb
464
- - spec/grape/validations/validators/coerce_spec.rb
465
- - spec/grape/validations/validators/at_least_one_of_spec.rb
466
- - spec/grape/validations/validators/zh-CN.yml
467
- - spec/grape/validations/validators/default_spec.rb
468
- - spec/grape/validations/validators/regexp_spec.rb
469
443
  - spec/grape/validations/validators/all_or_none_spec.rb
470
- - spec/grape/validations/validators/except_values_spec.rb
471
- - spec/grape/validations/validators/mutual_exclusion_spec.rb
472
444
  - spec/grape/validations/validators/allow_blank_spec.rb
473
- - spec/grape/validations/params_scope_spec.rb
474
- - spec/grape/validations/instance_behaivour_spec.rb
475
- - spec/grape/validations/types_spec.rb
476
- - spec/grape/api_spec.rb
477
- - spec/grape/loading_spec.rb
445
+ - spec/grape/validations/validators/default_spec.rb
446
+ - spec/grape/validations/validators/values_spec.rb
447
+ - spec/grape/validations/validators/at_least_one_of_spec.rb
448
+ - spec/grape/validations/validators/coerce_spec.rb
449
+ - spec/grape/validations/validators/zh-CN.yml
450
+ - spec/grape/extensions/param_builders/hashie/mash_spec.rb
451
+ - spec/grape/extensions/param_builders/hash_spec.rb
452
+ - spec/grape/extensions/param_builders/hash_with_indifferent_access_spec.rb
453
+ - spec/grape/parser_spec.rb
454
+ - spec/grape/request_spec.rb
455
+ - spec/grape/api/parameters_modification_spec.rb
456
+ - spec/grape/api/patch_method_helpers_spec.rb
457
+ - spec/grape/api/required_parameters_with_invalid_method_spec.rb
458
+ - spec/grape/api/nested_helpers_spec.rb
459
+ - spec/grape/api/invalid_format_spec.rb
460
+ - spec/grape/api/required_parameters_in_route_spec.rb
461
+ - spec/grape/api/namespace_parameters_in_route_spec.rb
462
+ - spec/grape/api/recognize_path_spec.rb
463
+ - spec/grape/api/shared_helpers_exactly_one_of_spec.rb
464
+ - spec/grape/api/inherited_helpers_spec.rb
465
+ - spec/grape/api/shared_helpers_spec.rb
466
+ - spec/grape/api/deeply_included_options_spec.rb
467
+ - spec/grape/api/routes_with_requirements_spec.rb
468
+ - spec/grape/api/custom_validations_spec.rb
469
+ - spec/grape/api/optional_parameters_in_route_spec.rb
470
+ - spec/grape/api_remount_spec.rb
471
+ - spec/grape/named_api_spec.rb
472
+ - spec/grape/dsl/request_response_spec.rb
473
+ - spec/grape/dsl/desc_spec.rb
474
+ - spec/grape/dsl/logger_spec.rb
475
+ - spec/grape/dsl/configuration_spec.rb
476
+ - spec/grape/dsl/validations_spec.rb
477
+ - spec/grape/dsl/parameters_spec.rb
478
+ - spec/grape/dsl/helpers_spec.rb
479
+ - spec/grape/dsl/middleware_spec.rb
480
+ - spec/grape/dsl/headers_spec.rb
481
+ - spec/grape/dsl/callbacks_spec.rb
482
+ - spec/grape/dsl/settings_spec.rb
483
+ - spec/grape/dsl/routing_spec.rb
484
+ - spec/grape/dsl/inside_route_spec.rb
478
485
  - spec/grape/path_spec.rb
479
- - spec/support/file_streamer.rb
480
- - spec/support/versioned_helpers.rb
481
- - spec/support/content_type_helpers.rb
482
- - spec/support/integer_helpers.rb
483
- - spec/support/basic_auth_encode_helpers.rb
484
- - spec/support/endpoint_faker.rb
485
- - spec/spec_helper.rb
486
- - spec/integration/multi_json/json_spec.rb
487
- - spec/integration/multi_xml/xml_spec.rb