grape 1.1.0 → 1.5.3

Sign up to get free protection for your applications and to get access to all the features.
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