grape 1.1.0 → 1.5.3

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.
Files changed (286) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +278 -44
  3. data/LICENSE +1 -1
  4. data/README.md +514 -69
  5. data/UPGRADING.md +424 -17
  6. data/grape.gemspec +13 -2
  7. data/lib/grape.rb +104 -71
  8. data/lib/grape/api.rb +138 -175
  9. data/lib/grape/api/helpers.rb +2 -0
  10. data/lib/grape/api/instance.rb +283 -0
  11. data/lib/grape/config.rb +34 -0
  12. data/lib/grape/content_types.rb +34 -0
  13. data/lib/grape/cookies.rb +2 -0
  14. data/lib/grape/dsl/api.rb +2 -0
  15. data/lib/grape/dsl/callbacks.rb +22 -0
  16. data/lib/grape/dsl/configuration.rb +2 -0
  17. data/lib/grape/dsl/desc.rb +41 -7
  18. data/lib/grape/dsl/headers.rb +2 -0
  19. data/lib/grape/dsl/helpers.rb +5 -2
  20. data/lib/grape/dsl/inside_route.rb +92 -49
  21. data/lib/grape/dsl/logger.rb +2 -0
  22. data/lib/grape/dsl/middleware.rb +9 -0
  23. data/lib/grape/dsl/parameters.rb +25 -14
  24. data/lib/grape/dsl/request_response.rb +4 -2
  25. data/lib/grape/dsl/routing.rb +17 -10
  26. data/lib/grape/dsl/settings.rb +7 -1
  27. data/lib/grape/dsl/validations.rb +24 -4
  28. data/lib/grape/eager_load.rb +20 -0
  29. data/lib/grape/endpoint.rb +59 -35
  30. data/lib/grape/error_formatter.rb +4 -2
  31. data/lib/grape/error_formatter/base.rb +2 -0
  32. data/lib/grape/error_formatter/json.rb +2 -0
  33. data/lib/grape/error_formatter/txt.rb +2 -0
  34. data/lib/grape/error_formatter/xml.rb +2 -0
  35. data/lib/grape/exceptions/base.rb +20 -14
  36. data/lib/grape/exceptions/empty_message_body.rb +11 -0
  37. data/lib/grape/exceptions/incompatible_option_values.rb +2 -0
  38. data/lib/grape/exceptions/invalid_accept_header.rb +2 -0
  39. data/lib/grape/exceptions/invalid_formatter.rb +2 -0
  40. data/lib/grape/exceptions/invalid_message_body.rb +2 -0
  41. data/lib/grape/exceptions/invalid_response.rb +11 -0
  42. data/lib/grape/exceptions/invalid_version_header.rb +2 -0
  43. data/lib/grape/exceptions/invalid_versioner_option.rb +2 -0
  44. data/lib/grape/exceptions/invalid_with_option_for_represent.rb +2 -0
  45. data/lib/grape/exceptions/method_not_allowed.rb +2 -0
  46. data/lib/grape/exceptions/missing_group_type.rb +2 -0
  47. data/lib/grape/exceptions/missing_mime_type.rb +2 -0
  48. data/lib/grape/exceptions/missing_option.rb +2 -0
  49. data/lib/grape/exceptions/missing_vendor_option.rb +2 -0
  50. data/lib/grape/exceptions/unknown_options.rb +2 -0
  51. data/lib/grape/exceptions/unknown_parameter.rb +2 -0
  52. data/lib/grape/exceptions/unknown_validator.rb +2 -0
  53. data/lib/grape/exceptions/unsupported_group_type.rb +2 -0
  54. data/lib/grape/exceptions/validation.rb +4 -2
  55. data/lib/grape/exceptions/validation_array_errors.rb +2 -0
  56. data/lib/grape/exceptions/validation_errors.rb +16 -13
  57. data/lib/grape/extensions/active_support/hash_with_indifferent_access.rb +4 -3
  58. data/lib/grape/extensions/deep_mergeable_hash.rb +2 -0
  59. data/lib/grape/extensions/deep_symbolize_hash.rb +2 -0
  60. data/lib/grape/extensions/hash.rb +2 -0
  61. data/lib/grape/extensions/hashie/mash.rb +2 -0
  62. data/lib/grape/formatter.rb +5 -3
  63. data/lib/grape/formatter/json.rb +2 -0
  64. data/lib/grape/formatter/serializable_hash.rb +2 -0
  65. data/lib/grape/formatter/txt.rb +2 -0
  66. data/lib/grape/formatter/xml.rb +2 -0
  67. data/lib/grape/http/headers.rb +50 -18
  68. data/lib/grape/locale/en.yml +3 -1
  69. data/lib/grape/middleware/auth/base.rb +7 -7
  70. data/lib/grape/middleware/auth/dsl.rb +2 -0
  71. data/lib/grape/middleware/auth/strategies.rb +2 -0
  72. data/lib/grape/middleware/auth/strategy_info.rb +2 -0
  73. data/lib/grape/middleware/base.rb +10 -7
  74. data/lib/grape/middleware/error.rb +21 -16
  75. data/lib/grape/middleware/filter.rb +2 -0
  76. data/lib/grape/middleware/formatter.rb +8 -6
  77. data/lib/grape/middleware/globals.rb +2 -0
  78. data/lib/grape/middleware/helpers.rb +12 -0
  79. data/lib/grape/middleware/stack.rb +13 -3
  80. data/lib/grape/middleware/versioner.rb +2 -0
  81. data/lib/grape/middleware/versioner/accept_version_header.rb +2 -0
  82. data/lib/grape/middleware/versioner/header.rb +10 -8
  83. data/lib/grape/middleware/versioner/param.rb +3 -1
  84. data/lib/grape/middleware/versioner/parse_media_type_patch.rb +4 -1
  85. data/lib/grape/middleware/versioner/path.rb +3 -1
  86. data/lib/grape/namespace.rb +14 -2
  87. data/lib/grape/parser.rb +4 -2
  88. data/lib/grape/parser/json.rb +3 -1
  89. data/lib/grape/parser/xml.rb +3 -1
  90. data/lib/grape/path.rb +15 -3
  91. data/lib/grape/presenters/presenter.rb +2 -0
  92. data/lib/grape/request.rb +19 -10
  93. data/lib/grape/router.rb +30 -29
  94. data/lib/grape/router/attribute_translator.rb +41 -8
  95. data/lib/grape/router/pattern.rb +20 -16
  96. data/lib/grape/router/route.rb +14 -28
  97. data/lib/grape/{serve_file → serve_stream}/file_body.rb +3 -1
  98. data/lib/grape/{serve_file → serve_stream}/sendfile_response.rb +3 -1
  99. data/lib/grape/{serve_file/file_response.rb → serve_stream/stream_response.rb} +10 -8
  100. data/lib/grape/util/base_inheritable.rb +43 -0
  101. data/lib/grape/util/cache.rb +20 -0
  102. data/lib/grape/util/endpoint_configuration.rb +8 -0
  103. data/lib/grape/util/env.rb +19 -17
  104. data/lib/grape/util/inheritable_setting.rb +2 -0
  105. data/lib/grape/util/inheritable_values.rb +7 -25
  106. data/lib/grape/util/json.rb +2 -0
  107. data/lib/grape/util/lazy_block.rb +27 -0
  108. data/lib/grape/util/lazy_object.rb +43 -0
  109. data/lib/grape/util/lazy_value.rb +98 -0
  110. data/lib/grape/util/registrable.rb +2 -0
  111. data/lib/grape/util/reverse_stackable_values.rb +10 -35
  112. data/lib/grape/util/stackable_values.rb +21 -34
  113. data/lib/grape/util/strict_hash_configuration.rb +2 -0
  114. data/lib/grape/util/xml.rb +2 -0
  115. data/lib/grape/validations.rb +2 -0
  116. data/lib/grape/validations/attributes_iterator.rb +16 -6
  117. data/lib/grape/validations/multiple_attributes_iterator.rb +13 -0
  118. data/lib/grape/validations/params_scope.rb +51 -30
  119. data/lib/grape/validations/single_attribute_iterator.rb +24 -0
  120. data/lib/grape/validations/types.rb +13 -38
  121. data/lib/grape/validations/types/array_coercer.rb +65 -0
  122. data/lib/grape/validations/types/build_coercer.rb +47 -49
  123. data/lib/grape/validations/types/custom_type_coercer.rb +29 -51
  124. data/lib/grape/validations/types/custom_type_collection_coercer.rb +10 -25
  125. data/lib/grape/validations/types/dry_type_coercer.rb +76 -0
  126. data/lib/grape/validations/types/file.rb +22 -18
  127. data/lib/grape/validations/types/invalid_value.rb +24 -0
  128. data/lib/grape/validations/types/json.rb +46 -39
  129. data/lib/grape/validations/types/multiple_type_coercer.rb +14 -33
  130. data/lib/grape/validations/types/primitive_coercer.rb +67 -0
  131. data/lib/grape/validations/types/set_coercer.rb +40 -0
  132. data/lib/grape/validations/types/variant_collection_coercer.rb +5 -13
  133. data/lib/grape/validations/validator_factory.rb +8 -11
  134. data/lib/grape/validations/validators/all_or_none.rb +8 -13
  135. data/lib/grape/validations/validators/allow_blank.rb +3 -1
  136. data/lib/grape/validations/validators/as.rb +5 -4
  137. data/lib/grape/validations/validators/at_least_one_of.rb +7 -13
  138. data/lib/grape/validations/validators/base.rb +20 -16
  139. data/lib/grape/validations/validators/coerce.rb +46 -29
  140. data/lib/grape/validations/validators/default.rb +6 -6
  141. data/lib/grape/validations/validators/exactly_one_of.rb +10 -23
  142. data/lib/grape/validations/validators/except_values.rb +4 -2
  143. data/lib/grape/validations/validators/multiple_params_base.rb +17 -10
  144. data/lib/grape/validations/validators/mutual_exclusion.rb +8 -18
  145. data/lib/grape/validations/validators/presence.rb +3 -1
  146. data/lib/grape/validations/validators/regexp.rb +4 -2
  147. data/lib/grape/validations/validators/same_as.rb +26 -0
  148. data/lib/grape/validations/validators/values.rb +18 -6
  149. data/lib/grape/version.rb +3 -1
  150. data/spec/grape/api/custom_validations_spec.rb +5 -3
  151. data/spec/grape/api/deeply_included_options_spec.rb +2 -0
  152. data/spec/grape/api/defines_boolean_in_params_spec.rb +39 -0
  153. data/spec/grape/api/inherited_helpers_spec.rb +2 -0
  154. data/spec/grape/api/instance_spec.rb +104 -0
  155. data/spec/grape/api/invalid_format_spec.rb +2 -0
  156. data/spec/grape/api/namespace_parameters_in_route_spec.rb +2 -0
  157. data/spec/grape/api/nested_helpers_spec.rb +2 -0
  158. data/spec/grape/api/optional_parameters_in_route_spec.rb +2 -0
  159. data/spec/grape/api/parameters_modification_spec.rb +3 -1
  160. data/spec/grape/api/patch_method_helpers_spec.rb +2 -0
  161. data/spec/grape/api/recognize_path_spec.rb +2 -0
  162. data/spec/grape/api/required_parameters_in_route_spec.rb +2 -0
  163. data/spec/grape/api/required_parameters_with_invalid_method_spec.rb +2 -0
  164. data/spec/grape/api/routes_with_requirements_spec.rb +61 -0
  165. data/spec/grape/api/shared_helpers_exactly_one_of_spec.rb +2 -0
  166. data/spec/grape/api/shared_helpers_spec.rb +2 -0
  167. data/spec/grape/api_remount_spec.rb +473 -0
  168. data/spec/grape/api_spec.rb +565 -12
  169. data/spec/grape/config_spec.rb +19 -0
  170. data/spec/grape/dsl/callbacks_spec.rb +2 -0
  171. data/spec/grape/dsl/configuration_spec.rb +2 -0
  172. data/spec/grape/dsl/desc_spec.rb +42 -16
  173. data/spec/grape/dsl/headers_spec.rb +2 -0
  174. data/spec/grape/dsl/helpers_spec.rb +4 -2
  175. data/spec/grape/dsl/inside_route_spec.rb +184 -33
  176. data/spec/grape/dsl/logger_spec.rb +2 -0
  177. data/spec/grape/dsl/middleware_spec.rb +10 -0
  178. data/spec/grape/dsl/parameters_spec.rb +2 -0
  179. data/spec/grape/dsl/request_response_spec.rb +2 -0
  180. data/spec/grape/dsl/routing_spec.rb +12 -0
  181. data/spec/grape/dsl/settings_spec.rb +2 -0
  182. data/spec/grape/dsl/validations_spec.rb +2 -0
  183. data/spec/grape/endpoint/declared_spec.rb +601 -0
  184. data/spec/grape/endpoint_spec.rb +53 -523
  185. data/spec/grape/entity_spec.rb +9 -1
  186. data/spec/grape/exceptions/base_spec.rb +67 -0
  187. data/spec/grape/exceptions/body_parse_errors_spec.rb +2 -0
  188. data/spec/grape/exceptions/invalid_accept_header_spec.rb +2 -0
  189. data/spec/grape/exceptions/invalid_formatter_spec.rb +2 -0
  190. data/spec/grape/exceptions/invalid_response_spec.rb +13 -0
  191. data/spec/grape/exceptions/invalid_versioner_option_spec.rb +2 -0
  192. data/spec/grape/exceptions/missing_mime_type_spec.rb +2 -0
  193. data/spec/grape/exceptions/missing_option_spec.rb +2 -0
  194. data/spec/grape/exceptions/unknown_options_spec.rb +2 -0
  195. data/spec/grape/exceptions/unknown_validator_spec.rb +2 -0
  196. data/spec/grape/exceptions/validation_errors_spec.rb +8 -4
  197. data/spec/grape/exceptions/validation_spec.rb +3 -1
  198. data/spec/grape/extensions/param_builders/hash_spec.rb +2 -0
  199. data/spec/grape/extensions/param_builders/hash_with_indifferent_access_spec.rb +2 -0
  200. data/spec/grape/extensions/param_builders/hashie/mash_spec.rb +2 -0
  201. data/spec/grape/integration/global_namespace_function_spec.rb +2 -0
  202. data/spec/grape/integration/rack_sendfile_spec.rb +14 -8
  203. data/spec/grape/integration/rack_spec.rb +25 -7
  204. data/spec/grape/loading_spec.rb +2 -0
  205. data/spec/grape/middleware/auth/base_spec.rb +2 -0
  206. data/spec/grape/middleware/auth/dsl_spec.rb +5 -3
  207. data/spec/grape/middleware/auth/strategies_spec.rb +3 -1
  208. data/spec/grape/middleware/base_spec.rb +10 -0
  209. data/spec/grape/middleware/error_spec.rb +3 -1
  210. data/spec/grape/middleware/exception_spec.rb +4 -2
  211. data/spec/grape/middleware/formatter_spec.rb +33 -16
  212. data/spec/grape/middleware/globals_spec.rb +2 -0
  213. data/spec/grape/middleware/stack_spec.rb +12 -0
  214. data/spec/grape/middleware/versioner/accept_version_header_spec.rb +3 -1
  215. data/spec/grape/middleware/versioner/header_spec.rb +9 -1
  216. data/spec/grape/middleware/versioner/param_spec.rb +3 -1
  217. data/spec/grape/middleware/versioner/path_spec.rb +3 -1
  218. data/spec/grape/middleware/versioner_spec.rb +2 -0
  219. data/spec/grape/named_api_spec.rb +21 -0
  220. data/spec/grape/parser_spec.rb +7 -5
  221. data/spec/grape/path_spec.rb +6 -4
  222. data/spec/grape/presenters/presenter_spec.rb +2 -0
  223. data/spec/grape/request_spec.rb +26 -0
  224. data/spec/grape/util/inheritable_setting_spec.rb +2 -0
  225. data/spec/grape/util/inheritable_values_spec.rb +2 -0
  226. data/spec/grape/util/reverse_stackable_values_spec.rb +2 -0
  227. data/spec/grape/util/stackable_values_spec.rb +3 -1
  228. data/spec/grape/util/strict_hash_configuration_spec.rb +2 -0
  229. data/spec/grape/validations/attributes_iterator_spec.rb +2 -0
  230. data/spec/grape/validations/instance_behaivour_spec.rb +5 -3
  231. data/spec/grape/validations/multiple_attributes_iterator_spec.rb +41 -0
  232. data/spec/grape/validations/params_scope_spec.rb +213 -9
  233. data/spec/grape/validations/single_attribute_iterator_spec.rb +58 -0
  234. data/spec/grape/validations/types/array_coercer_spec.rb +35 -0
  235. data/spec/grape/validations/types/primitive_coercer_spec.rb +135 -0
  236. data/spec/grape/validations/types/set_coercer_spec.rb +34 -0
  237. data/spec/grape/validations/types_spec.rb +9 -36
  238. data/spec/grape/validations/validators/all_or_none_spec.rb +140 -30
  239. data/spec/grape/validations/validators/allow_blank_spec.rb +2 -0
  240. data/spec/grape/validations/validators/at_least_one_of_spec.rb +175 -29
  241. data/spec/grape/validations/validators/coerce_spec.rb +476 -135
  242. data/spec/grape/validations/validators/default_spec.rb +172 -0
  243. data/spec/grape/validations/validators/exactly_one_of_spec.rb +204 -38
  244. data/spec/grape/validations/validators/except_values_spec.rb +4 -1
  245. data/spec/grape/validations/validators/mutual_exclusion_spec.rb +186 -27
  246. data/spec/grape/validations/validators/presence_spec.rb +30 -0
  247. data/spec/grape/validations/validators/regexp_spec.rb +2 -0
  248. data/spec/grape/validations/validators/same_as_spec.rb +65 -0
  249. data/spec/grape/validations/validators/values_spec.rb +30 -5
  250. data/spec/grape/validations_spec.rb +388 -50
  251. data/spec/integration/eager_load/eager_load_spec.rb +15 -0
  252. data/spec/integration/multi_json/json_spec.rb +2 -0
  253. data/spec/integration/multi_xml/xml_spec.rb +2 -0
  254. data/spec/shared/versioning_examples.rb +22 -20
  255. data/spec/spec_helper.rb +12 -1
  256. data/spec/support/basic_auth_encode_helpers.rb +2 -0
  257. data/spec/support/chunks.rb +14 -0
  258. data/spec/support/content_type_helpers.rb +2 -0
  259. data/spec/support/eager_load.rb +19 -0
  260. data/spec/support/endpoint_faker.rb +2 -0
  261. data/spec/support/file_streamer.rb +2 -0
  262. data/spec/support/integer_helpers.rb +2 -0
  263. data/spec/support/versioned_helpers.rb +8 -8
  264. metadata +86 -48
  265. data/Appraisals +0 -32
  266. data/Dangerfile +0 -2
  267. data/Gemfile +0 -33
  268. data/Gemfile.lock +0 -231
  269. data/Guardfile +0 -10
  270. data/RELEASING.md +0 -111
  271. data/Rakefile +0 -25
  272. data/benchmark/simple.rb +0 -27
  273. data/benchmark/simple_with_type_coercer.rb +0 -22
  274. data/gemfiles/multi_json.gemfile +0 -35
  275. data/gemfiles/multi_xml.gemfile +0 -35
  276. data/gemfiles/rack_1.5.2.gemfile +0 -35
  277. data/gemfiles/rack_edge.gemfile +0 -35
  278. data/gemfiles/rails_3.gemfile +0 -36
  279. data/gemfiles/rails_4.gemfile +0 -35
  280. data/gemfiles/rails_5.gemfile +0 -35
  281. data/gemfiles/rails_edge.gemfile +0 -35
  282. data/lib/grape/extensions/deep_hash_with_indifferent_access.rb +0 -18
  283. data/lib/grape/util/content_types.rb +0 -26
  284. data/lib/grape/validations/types/virtus_collection_patch.rb +0 -16
  285. data/pkg/grape-0.17.0.gem +0 -0
  286. data/pkg/grape-0.19.0.gem +0 -0
@@ -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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe Grape::Json do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe Grape::Xml do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  shared_examples_for 'versioning' do
2
4
  it 'sets the API version' do
3
5
  subject.format :txt
@@ -5,7 +7,7 @@ shared_examples_for 'versioning' do
5
7
  subject.get :hello do
6
8
  "Version: #{request.env['api.version']}"
7
9
  end
8
- versioned_get '/hello', 'v1', macro_options
10
+ versioned_get '/hello', 'v1', **macro_options
9
11
  expect(last_response.body).to eql 'Version: v1'
10
12
  end
11
13
 
@@ -16,7 +18,7 @@ shared_examples_for 'versioning' do
16
18
  subject.get :hello do
17
19
  "Version: #{request.env['api.version']}"
18
20
  end
19
- versioned_get '/hello', 'v1', macro_options.merge(prefix: 'api')
21
+ versioned_get '/hello', 'v1', **macro_options.merge(prefix: 'api')
20
22
  expect(last_response.body).to eql 'Version: v1'
21
23
  end
22
24
 
@@ -32,14 +34,14 @@ shared_examples_for 'versioning' do
32
34
  end
33
35
  end
34
36
 
35
- versioned_get '/awesome', 'v1', macro_options
37
+ versioned_get '/awesome', 'v1', **macro_options
36
38
  expect(last_response.status).to eql 404
37
39
 
38
- versioned_get '/awesome', 'v2', macro_options
40
+ versioned_get '/awesome', 'v2', **macro_options
39
41
  expect(last_response.status).to eql 200
40
- versioned_get '/legacy', 'v1', macro_options
42
+ versioned_get '/legacy', 'v1', **macro_options
41
43
  expect(last_response.status).to eql 200
42
- versioned_get '/legacy', 'v2', macro_options
44
+ versioned_get '/legacy', 'v2', **macro_options
43
45
  expect(last_response.status).to eql 404
44
46
  end
45
47
 
@@ -49,11 +51,11 @@ shared_examples_for 'versioning' do
49
51
  'I exist'
50
52
  end
51
53
 
52
- versioned_get '/awesome', 'v1', macro_options
54
+ versioned_get '/awesome', 'v1', **macro_options
53
55
  expect(last_response.status).to eql 200
54
- versioned_get '/awesome', 'v2', macro_options
56
+ versioned_get '/awesome', 'v2', **macro_options
55
57
  expect(last_response.status).to eql 200
56
- versioned_get '/awesome', 'v3', macro_options
58
+ versioned_get '/awesome', 'v3', **macro_options
57
59
  expect(last_response.status).to eql 404
58
60
  end
59
61
 
@@ -72,10 +74,10 @@ shared_examples_for 'versioning' do
72
74
  end
73
75
  end
74
76
 
75
- versioned_get '/version', 'v2', macro_options
77
+ versioned_get '/version', 'v2', **macro_options
76
78
  expect(last_response.status).to eq(200)
77
79
  expect(last_response.body).to eq('v2')
78
- versioned_get '/version', 'v1', macro_options
80
+ versioned_get '/version', 'v1', **macro_options
79
81
  expect(last_response.status).to eq(200)
80
82
  expect(last_response.body).to eq('version v1')
81
83
  end
@@ -96,11 +98,11 @@ shared_examples_for 'versioning' do
96
98
  end
97
99
  end
98
100
 
99
- versioned_get '/version', 'v1', macro_options.merge(prefix: subject.prefix)
101
+ versioned_get '/version', 'v1', **macro_options.merge(prefix: subject.prefix)
100
102
  expect(last_response.status).to eq(200)
101
103
  expect(last_response.body).to eq('version v1')
102
104
 
103
- versioned_get '/version', 'v2', macro_options.merge(prefix: subject.prefix)
105
+ versioned_get '/version', 'v2', **macro_options.merge(prefix: subject.prefix)
104
106
  expect(last_response.status).to eq(200)
105
107
  expect(last_response.body).to eq('v2')
106
108
  end
@@ -129,11 +131,11 @@ shared_examples_for 'versioning' do
129
131
  end
130
132
  end
131
133
 
132
- versioned_get '/version', 'v1', macro_options.merge(prefix: subject.prefix)
134
+ versioned_get '/version', 'v1', **macro_options.merge(prefix: subject.prefix)
133
135
  expect(last_response.status).to eq(200)
134
136
  expect(last_response.body).to eq('v1-version')
135
137
 
136
- versioned_get '/version', 'v2', macro_options.merge(prefix: subject.prefix)
138
+ versioned_get '/version', 'v2', **macro_options.merge(prefix: subject.prefix)
137
139
  expect(last_response.status).to eq(200)
138
140
  expect(last_response.body).to eq('v2-version')
139
141
  end
@@ -146,7 +148,7 @@ shared_examples_for 'versioning' do
146
148
  subject.get :api_version_with_version_param do
147
149
  params[:version]
148
150
  end
149
- versioned_get '/api_version_with_version_param?version=1', 'v1', macro_options
151
+ versioned_get '/api_version_with_version_param?version=1', 'v1', **macro_options
150
152
  expect(last_response.body).to eql '1'
151
153
  end
152
154
 
@@ -181,13 +183,13 @@ shared_examples_for 'versioning' do
181
183
 
182
184
  context 'v1' do
183
185
  it 'finds endpoint' do
184
- versioned_get '/version', 'v1', macro_options
186
+ versioned_get '/version', 'v1', **macro_options
185
187
  expect(last_response.status).to eq(200)
186
188
  expect(last_response.body).to eq('v1')
187
189
  end
188
190
 
189
191
  it 'finds catch all' do
190
- versioned_get '/whatever', 'v1', macro_options
192
+ versioned_get '/whatever', 'v1', **macro_options
191
193
  expect(last_response.status).to eq(200)
192
194
  expect(last_response.body).to end_with 'whatever'
193
195
  end
@@ -195,13 +197,13 @@ shared_examples_for 'versioning' do
195
197
 
196
198
  context 'v2' do
197
199
  it 'finds endpoint' do
198
- versioned_get '/version', 'v2', macro_options
200
+ versioned_get '/version', 'v2', **macro_options
199
201
  expect(last_response.status).to eq(200)
200
202
  expect(last_response.body).to eq('v2')
201
203
  end
202
204
 
203
205
  it 'finds catch all' do
204
- versioned_get '/whatever', 'v2', macro_options
206
+ versioned_get '/whatever', 'v2', **macro_options
205
207
  expect(last_response.status).to eq(200)
206
208
  expect(last_response.body).to end_with 'whatever'
207
209
  end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  $LOAD_PATH.unshift(File.dirname(__FILE__))
2
4
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
5
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), 'support'))
@@ -12,14 +14,23 @@ Dir["#{File.dirname(__FILE__)}/support/*.rb"].each do |file|
12
14
  require file
13
15
  end
14
16
 
15
- I18n.enforce_available_locales = false
17
+ eager_load!
18
+
19
+ # The default value for this setting is true in a standard Rails app,
20
+ # so it should be set to true here as well to reflect that.
21
+ I18n.enforce_available_locales = true
16
22
 
17
23
  RSpec.configure do |config|
18
24
  config.include Rack::Test::Methods
19
25
  config.include Spec::Support::Helpers
20
26
  config.raise_errors_for_deprecations!
27
+ config.filter_run_when_matching :focus
28
+ config.warnings = true
21
29
 
22
30
  config.before(:each) { Grape::Util::InheritableSetting.reset_global! }
31
+
32
+ # Enable flags like --only-failures and --next-failure
33
+ config.example_status_persistence_file_path = '.rspec_status'
23
34
  end
24
35
 
25
36
  require 'coveralls'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Spec
2
4
  module Support
3
5
  module Helpers
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Chunks
4
+ def read_chunks(body)
5
+ buffer = []
6
+ body.each { |chunk| buffer << chunk }
7
+
8
+ buffer
9
+ end
10
+ end
11
+
12
+ RSpec.configure do |config|
13
+ config.include Chunks
14
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Spec
2
4
  module Support
3
5
  module Helpers
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Grape uses autoload https://api.rubyonrails.org/classes/ActiveSupport/Autoload.html.
4
+ # When a class/module get added to the list, ActiveSupport doesn't check whether it really exists.
5
+ # This method loads all classes/modules defined via autoload to be sure only existing
6
+ # classes/modules were listed.
7
+ def eager_load!(scope = Grape)
8
+ # get modules
9
+ scope.constants.each do |const_name|
10
+ const = scope.const_get(const_name)
11
+
12
+ next unless const.respond_to?(:eager_load!)
13
+
14
+ const.eager_load!
15
+
16
+ # check its modules, they might need to be loaded as well.
17
+ eager_load!(const)
18
+ end
19
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Spec
2
4
  module Support
3
5
  class EndpointFaker
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class FileStreamer
2
4
  def initialize(file_path)
3
5
  @file_path = file_path
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Spec
2
4
  module Support
3
5
  module Helpers
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Versioning
2
4
  module Spec
3
5
  module Support
4
6
  module Helpers
5
7
  # Returns the path with options[:version] prefixed if options[:using] is :path.
6
8
  # Returns normal path otherwise.
7
- def versioned_path(options = {})
9
+ def versioned_path(**options)
8
10
  case options[:using]
9
11
  when :path
10
12
  File.join('/', options[:prefix] || '', options[:version], options[:path])
@@ -19,7 +21,7 @@ module Spec
19
21
  end
20
22
  end
21
23
 
22
- def versioned_headers(options)
24
+ def versioned_headers(**options)
23
25
  case options[:using]
24
26
  when :path
25
27
  {} # no-op
@@ -41,13 +43,11 @@ module Spec
41
43
  end
42
44
  end
43
45
 
44
- def versioned_get(path, version_name, version_options = {})
45
- path = versioned_path(version_options.merge(version: version_name, path: path))
46
- headers = versioned_headers(version_options.merge(version: version_name))
46
+ def versioned_get(path, version_name, **version_options)
47
+ path = versioned_path(**version_options.merge(version: version_name, path: path))
48
+ headers = versioned_headers(**version_options.merge(version: version_name))
47
49
  params = {}
48
- if version_options[:using] == :param
49
- params = { version_options[:parameter] => version_name }
50
- end
50
+ params = { version_options[:parameter] => version_name } if version_options[:using] == :param
51
51
  get path, params, headers
52
52
  end
53
53
  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.1.0
4
+ version: 1.5.3
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: 2018-08-04 00:00:00.000000000 Z
11
+ date: 2021-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: dry-types
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '1.1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '1.1'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: mustermann-grape
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -80,20 +94,6 @@ dependencies:
80
94
  - - ">="
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: virtus
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: 1.0.0
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: 1.0.0
97
97
  description: A Ruby framework for rapid API development with great conventions.
98
98
  email:
99
99
  - michael@intridea.com
@@ -101,33 +101,19 @@ executables: []
101
101
  extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
- - Appraisals
105
104
  - CHANGELOG.md
106
105
  - CONTRIBUTING.md
107
- - Dangerfile
108
- - Gemfile
109
- - Gemfile.lock
110
- - Guardfile
111
106
  - LICENSE
112
107
  - README.md
113
- - RELEASING.md
114
- - Rakefile
115
108
  - UPGRADING.md
116
- - benchmark/simple.rb
117
- - benchmark/simple_with_type_coercer.rb
118
- - gemfiles/multi_json.gemfile
119
- - gemfiles/multi_xml.gemfile
120
- - gemfiles/rack_1.5.2.gemfile
121
- - gemfiles/rack_edge.gemfile
122
- - gemfiles/rails_3.gemfile
123
- - gemfiles/rails_4.gemfile
124
- - gemfiles/rails_5.gemfile
125
- - gemfiles/rails_edge.gemfile
126
109
  - grape.gemspec
127
110
  - grape.png
128
111
  - lib/grape.rb
129
112
  - lib/grape/api.rb
130
113
  - lib/grape/api/helpers.rb
114
+ - lib/grape/api/instance.rb
115
+ - lib/grape/config.rb
116
+ - lib/grape/content_types.rb
131
117
  - lib/grape/cookies.rb
132
118
  - lib/grape/dsl/api.rb
133
119
  - lib/grape/dsl/callbacks.rb
@@ -143,6 +129,7 @@ files:
143
129
  - lib/grape/dsl/routing.rb
144
130
  - lib/grape/dsl/settings.rb
145
131
  - lib/grape/dsl/validations.rb
132
+ - lib/grape/eager_load.rb
146
133
  - lib/grape/endpoint.rb
147
134
  - lib/grape/error_formatter.rb
148
135
  - lib/grape/error_formatter/base.rb
@@ -150,10 +137,12 @@ files:
150
137
  - lib/grape/error_formatter/txt.rb
151
138
  - lib/grape/error_formatter/xml.rb
152
139
  - lib/grape/exceptions/base.rb
140
+ - lib/grape/exceptions/empty_message_body.rb
153
141
  - lib/grape/exceptions/incompatible_option_values.rb
154
142
  - lib/grape/exceptions/invalid_accept_header.rb
155
143
  - lib/grape/exceptions/invalid_formatter.rb
156
144
  - lib/grape/exceptions/invalid_message_body.rb
145
+ - lib/grape/exceptions/invalid_response.rb
157
146
  - lib/grape/exceptions/invalid_version_header.rb
158
147
  - lib/grape/exceptions/invalid_versioner_option.rb
159
148
  - lib/grape/exceptions/invalid_with_option_for_represent.rb
@@ -170,7 +159,6 @@ files:
170
159
  - lib/grape/exceptions/validation_array_errors.rb
171
160
  - lib/grape/exceptions/validation_errors.rb
172
161
  - lib/grape/extensions/active_support/hash_with_indifferent_access.rb
173
- - lib/grape/extensions/deep_hash_with_indifferent_access.rb
174
162
  - lib/grape/extensions/deep_mergeable_hash.rb
175
163
  - lib/grape/extensions/deep_symbolize_hash.rb
176
164
  - lib/grape/extensions/hash.rb
@@ -191,6 +179,7 @@ files:
191
179
  - lib/grape/middleware/filter.rb
192
180
  - lib/grape/middleware/formatter.rb
193
181
  - lib/grape/middleware/globals.rb
182
+ - lib/grape/middleware/helpers.rb
194
183
  - lib/grape/middleware/stack.rb
195
184
  - lib/grape/middleware/versioner.rb
196
185
  - lib/grape/middleware/versioner/accept_version_header.rb
@@ -209,14 +198,19 @@ files:
209
198
  - lib/grape/router/attribute_translator.rb
210
199
  - lib/grape/router/pattern.rb
211
200
  - lib/grape/router/route.rb
212
- - lib/grape/serve_file/file_body.rb
213
- - lib/grape/serve_file/file_response.rb
214
- - lib/grape/serve_file/sendfile_response.rb
215
- - lib/grape/util/content_types.rb
201
+ - lib/grape/serve_stream/file_body.rb
202
+ - lib/grape/serve_stream/sendfile_response.rb
203
+ - lib/grape/serve_stream/stream_response.rb
204
+ - lib/grape/util/base_inheritable.rb
205
+ - lib/grape/util/cache.rb
206
+ - lib/grape/util/endpoint_configuration.rb
216
207
  - lib/grape/util/env.rb
217
208
  - lib/grape/util/inheritable_setting.rb
218
209
  - lib/grape/util/inheritable_values.rb
219
210
  - lib/grape/util/json.rb
211
+ - lib/grape/util/lazy_block.rb
212
+ - lib/grape/util/lazy_object.rb
213
+ - lib/grape/util/lazy_value.rb
220
214
  - lib/grape/util/registrable.rb
221
215
  - lib/grape/util/reverse_stackable_values.rb
222
216
  - lib/grape/util/stackable_values.rb
@@ -224,16 +218,22 @@ files:
224
218
  - lib/grape/util/xml.rb
225
219
  - lib/grape/validations.rb
226
220
  - lib/grape/validations/attributes_iterator.rb
221
+ - lib/grape/validations/multiple_attributes_iterator.rb
227
222
  - lib/grape/validations/params_scope.rb
223
+ - lib/grape/validations/single_attribute_iterator.rb
228
224
  - lib/grape/validations/types.rb
225
+ - lib/grape/validations/types/array_coercer.rb
229
226
  - lib/grape/validations/types/build_coercer.rb
230
227
  - lib/grape/validations/types/custom_type_coercer.rb
231
228
  - lib/grape/validations/types/custom_type_collection_coercer.rb
229
+ - lib/grape/validations/types/dry_type_coercer.rb
232
230
  - lib/grape/validations/types/file.rb
231
+ - lib/grape/validations/types/invalid_value.rb
233
232
  - lib/grape/validations/types/json.rb
234
233
  - lib/grape/validations/types/multiple_type_coercer.rb
234
+ - lib/grape/validations/types/primitive_coercer.rb
235
+ - lib/grape/validations/types/set_coercer.rb
235
236
  - lib/grape/validations/types/variant_collection_coercer.rb
236
- - lib/grape/validations/types/virtus_collection_patch.rb
237
237
  - lib/grape/validations/validator_factory.rb
238
238
  - lib/grape/validations/validators/all_or_none.rb
239
239
  - lib/grape/validations/validators/allow_blank.rb
@@ -248,13 +248,14 @@ files:
248
248
  - lib/grape/validations/validators/mutual_exclusion.rb
249
249
  - lib/grape/validations/validators/presence.rb
250
250
  - lib/grape/validations/validators/regexp.rb
251
+ - lib/grape/validations/validators/same_as.rb
251
252
  - lib/grape/validations/validators/values.rb
252
253
  - lib/grape/version.rb
253
- - pkg/grape-0.17.0.gem
254
- - pkg/grape-0.19.0.gem
255
254
  - spec/grape/api/custom_validations_spec.rb
256
255
  - spec/grape/api/deeply_included_options_spec.rb
256
+ - spec/grape/api/defines_boolean_in_params_spec.rb
257
257
  - spec/grape/api/inherited_helpers_spec.rb
258
+ - spec/grape/api/instance_spec.rb
258
259
  - spec/grape/api/invalid_format_spec.rb
259
260
  - spec/grape/api/namespace_parameters_in_route_spec.rb
260
261
  - spec/grape/api/nested_helpers_spec.rb
@@ -264,9 +265,12 @@ files:
264
265
  - spec/grape/api/recognize_path_spec.rb
265
266
  - spec/grape/api/required_parameters_in_route_spec.rb
266
267
  - spec/grape/api/required_parameters_with_invalid_method_spec.rb
268
+ - spec/grape/api/routes_with_requirements_spec.rb
267
269
  - spec/grape/api/shared_helpers_exactly_one_of_spec.rb
268
270
  - spec/grape/api/shared_helpers_spec.rb
271
+ - spec/grape/api_remount_spec.rb
269
272
  - spec/grape/api_spec.rb
273
+ - spec/grape/config_spec.rb
270
274
  - spec/grape/dsl/callbacks_spec.rb
271
275
  - spec/grape/dsl/configuration_spec.rb
272
276
  - spec/grape/dsl/desc_spec.rb
@@ -280,11 +284,14 @@ files:
280
284
  - spec/grape/dsl/routing_spec.rb
281
285
  - spec/grape/dsl/settings_spec.rb
282
286
  - spec/grape/dsl/validations_spec.rb
287
+ - spec/grape/endpoint/declared_spec.rb
283
288
  - spec/grape/endpoint_spec.rb
284
289
  - spec/grape/entity_spec.rb
290
+ - spec/grape/exceptions/base_spec.rb
285
291
  - spec/grape/exceptions/body_parse_errors_spec.rb
286
292
  - spec/grape/exceptions/invalid_accept_header_spec.rb
287
293
  - spec/grape/exceptions/invalid_formatter_spec.rb
294
+ - spec/grape/exceptions/invalid_response_spec.rb
288
295
  - spec/grape/exceptions/invalid_versioner_option_spec.rb
289
296
  - spec/grape/exceptions/missing_mime_type_spec.rb
290
297
  - spec/grape/exceptions/missing_option_spec.rb
@@ -313,6 +320,7 @@ files:
313
320
  - spec/grape/middleware/versioner/param_spec.rb
314
321
  - spec/grape/middleware/versioner/path_spec.rb
315
322
  - spec/grape/middleware/versioner_spec.rb
323
+ - spec/grape/named_api_spec.rb
316
324
  - spec/grape/parser_spec.rb
317
325
  - spec/grape/path_spec.rb
318
326
  - spec/grape/presenters/presenter_spec.rb
@@ -324,7 +332,12 @@ files:
324
332
  - spec/grape/util/strict_hash_configuration_spec.rb
325
333
  - spec/grape/validations/attributes_iterator_spec.rb
326
334
  - spec/grape/validations/instance_behaivour_spec.rb
335
+ - spec/grape/validations/multiple_attributes_iterator_spec.rb
327
336
  - spec/grape/validations/params_scope_spec.rb
337
+ - spec/grape/validations/single_attribute_iterator_spec.rb
338
+ - spec/grape/validations/types/array_coercer_spec.rb
339
+ - spec/grape/validations/types/primitive_coercer_spec.rb
340
+ - spec/grape/validations/types/set_coercer_spec.rb
328
341
  - spec/grape/validations/types_spec.rb
329
342
  - spec/grape/validations/validators/all_or_none_spec.rb
330
343
  - spec/grape/validations/validators/allow_blank_spec.rb
@@ -336,15 +349,19 @@ files:
336
349
  - spec/grape/validations/validators/mutual_exclusion_spec.rb
337
350
  - spec/grape/validations/validators/presence_spec.rb
338
351
  - spec/grape/validations/validators/regexp_spec.rb
352
+ - spec/grape/validations/validators/same_as_spec.rb
339
353
  - spec/grape/validations/validators/values_spec.rb
340
354
  - spec/grape/validations/validators/zh-CN.yml
341
355
  - spec/grape/validations_spec.rb
356
+ - spec/integration/eager_load/eager_load_spec.rb
342
357
  - spec/integration/multi_json/json_spec.rb
343
358
  - spec/integration/multi_xml/xml_spec.rb
344
359
  - spec/shared/versioning_examples.rb
345
360
  - spec/spec_helper.rb
346
361
  - spec/support/basic_auth_encode_helpers.rb
362
+ - spec/support/chunks.rb
347
363
  - spec/support/content_type_helpers.rb
364
+ - spec/support/eager_load.rb
348
365
  - spec/support/endpoint_faker.rb
349
366
  - spec/support/file_streamer.rb
350
367
  - spec/support/integer_helpers.rb
@@ -352,8 +369,12 @@ files:
352
369
  homepage: https://github.com/ruby-grape/grape
353
370
  licenses:
354
371
  - MIT
355
- metadata: {}
356
- post_install_message:
372
+ metadata:
373
+ bug_tracker_uri: https://github.com/ruby-grape/grape/issues
374
+ changelog_uri: https://github.com/ruby-grape/grape/blob/v1.5.3/CHANGELOG.md
375
+ documentation_uri: https://www.rubydoc.info/gems/grape/1.5.3
376
+ source_code_uri: https://github.com/ruby-grape/grape/tree/v1.5.3
377
+ post_install_message:
357
378
  rdoc_options: []
358
379
  require_paths:
359
380
  - lib
@@ -361,28 +382,30 @@ required_ruby_version: !ruby/object:Gem::Requirement
361
382
  requirements:
362
383
  - - ">="
363
384
  - !ruby/object:Gem::Version
364
- version: '0'
385
+ version: 2.4.0
365
386
  required_rubygems_version: !ruby/object:Gem::Requirement
366
387
  requirements:
367
388
  - - ">="
368
389
  - !ruby/object:Gem::Version
369
390
  version: '0'
370
391
  requirements: []
371
- rubyforge_project:
372
- rubygems_version: 2.7.6
373
- signing_key:
392
+ rubygems_version: 3.1.3
393
+ signing_key:
374
394
  specification_version: 4
375
395
  summary: A simple Ruby framework for building REST-like APIs.
376
396
  test_files:
377
397
  - spec/spec_helper.rb
398
+ - spec/integration/eager_load/eager_load_spec.rb
378
399
  - spec/integration/multi_xml/xml_spec.rb
379
400
  - spec/integration/multi_json/json_spec.rb
380
401
  - spec/shared/versioning_examples.rb
381
402
  - spec/support/basic_auth_encode_helpers.rb
382
403
  - spec/support/endpoint_faker.rb
404
+ - spec/support/chunks.rb
383
405
  - spec/support/file_streamer.rb
384
406
  - spec/support/versioned_helpers.rb
385
407
  - spec/support/content_type_helpers.rb
408
+ - spec/support/eager_load.rb
386
409
  - spec/support/integer_helpers.rb
387
410
  - spec/grape/middleware/error_spec.rb
388
411
  - spec/grape/middleware/globals_spec.rb
@@ -398,6 +421,7 @@ test_files:
398
421
  - spec/grape/middleware/versioner/path_spec.rb
399
422
  - spec/grape/middleware/versioner/param_spec.rb
400
423
  - spec/grape/middleware/base_spec.rb
424
+ - spec/grape/config_spec.rb
401
425
  - spec/grape/loading_spec.rb
402
426
  - spec/grape/endpoint_spec.rb
403
427
  - spec/grape/api_spec.rb
@@ -414,6 +438,7 @@ test_files:
414
438
  - spec/grape/exceptions/validation_spec.rb
415
439
  - spec/grape/exceptions/invalid_accept_header_spec.rb
416
440
  - spec/grape/exceptions/missing_option_spec.rb
441
+ - spec/grape/exceptions/invalid_response_spec.rb
417
442
  - spec/grape/exceptions/body_parse_errors_spec.rb
418
443
  - spec/grape/exceptions/invalid_formatter_spec.rb
419
444
  - spec/grape/exceptions/missing_mime_type_spec.rb
@@ -421,10 +446,16 @@ test_files:
421
446
  - spec/grape/exceptions/validation_errors_spec.rb
422
447
  - spec/grape/exceptions/unknown_validator_spec.rb
423
448
  - spec/grape/exceptions/invalid_versioner_option_spec.rb
449
+ - spec/grape/exceptions/base_spec.rb
424
450
  - spec/grape/presenters/presenter_spec.rb
451
+ - spec/grape/validations/single_attribute_iterator_spec.rb
425
452
  - spec/grape/validations/attributes_iterator_spec.rb
453
+ - spec/grape/validations/types/primitive_coercer_spec.rb
454
+ - spec/grape/validations/types/set_coercer_spec.rb
455
+ - spec/grape/validations/types/array_coercer_spec.rb
426
456
  - spec/grape/validations/params_scope_spec.rb
427
457
  - spec/grape/validations/instance_behaivour_spec.rb
458
+ - spec/grape/validations/multiple_attributes_iterator_spec.rb
428
459
  - spec/grape/validations/types_spec.rb
429
460
  - spec/grape/validations/validators/regexp_spec.rb
430
461
  - spec/grape/validations/validators/mutual_exclusion_spec.rb
@@ -433,6 +464,7 @@ test_files:
433
464
  - spec/grape/validations/validators/presence_spec.rb
434
465
  - spec/grape/validations/validators/all_or_none_spec.rb
435
466
  - spec/grape/validations/validators/allow_blank_spec.rb
467
+ - spec/grape/validations/validators/same_as_spec.rb
436
468
  - spec/grape/validations/validators/default_spec.rb
437
469
  - spec/grape/validations/validators/values_spec.rb
438
470
  - spec/grape/validations/validators/at_least_one_of_spec.rb
@@ -443,20 +475,26 @@ test_files:
443
475
  - spec/grape/extensions/param_builders/hash_with_indifferent_access_spec.rb
444
476
  - spec/grape/parser_spec.rb
445
477
  - spec/grape/request_spec.rb
478
+ - spec/grape/endpoint/declared_spec.rb
446
479
  - spec/grape/api/parameters_modification_spec.rb
447
480
  - spec/grape/api/patch_method_helpers_spec.rb
448
481
  - spec/grape/api/required_parameters_with_invalid_method_spec.rb
449
482
  - spec/grape/api/nested_helpers_spec.rb
483
+ - spec/grape/api/defines_boolean_in_params_spec.rb
450
484
  - spec/grape/api/invalid_format_spec.rb
451
485
  - spec/grape/api/required_parameters_in_route_spec.rb
486
+ - spec/grape/api/instance_spec.rb
452
487
  - spec/grape/api/namespace_parameters_in_route_spec.rb
453
488
  - spec/grape/api/recognize_path_spec.rb
454
489
  - spec/grape/api/shared_helpers_exactly_one_of_spec.rb
455
490
  - spec/grape/api/inherited_helpers_spec.rb
456
491
  - spec/grape/api/shared_helpers_spec.rb
457
492
  - spec/grape/api/deeply_included_options_spec.rb
493
+ - spec/grape/api/routes_with_requirements_spec.rb
458
494
  - spec/grape/api/custom_validations_spec.rb
459
495
  - spec/grape/api/optional_parameters_in_route_spec.rb
496
+ - spec/grape/api_remount_spec.rb
497
+ - spec/grape/named_api_spec.rb
460
498
  - spec/grape/dsl/request_response_spec.rb
461
499
  - spec/grape/dsl/desc_spec.rb
462
500
  - spec/grape/dsl/logger_spec.rb