dry-validation 0.13.3 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +506 -95
  3. data/LICENSE +1 -1
  4. data/README.md +16 -12
  5. data/config/errors.yml +3 -88
  6. data/dry-validation.gemspec +37 -24
  7. data/lib/dry/validation/config.rb +24 -0
  8. data/lib/dry/validation/constants.rb +43 -0
  9. data/lib/dry/validation/contract/class_interface.rb +230 -0
  10. data/lib/dry/validation/contract.rb +171 -0
  11. data/lib/dry/validation/evaluator.rb +224 -0
  12. data/lib/dry/validation/extensions/hints.rb +67 -0
  13. data/lib/dry/validation/extensions/monads.rb +24 -8
  14. data/lib/dry/validation/extensions/predicates_as_macros.rb +75 -0
  15. data/lib/dry/validation/failures.rb +70 -0
  16. data/lib/dry/validation/function.rb +44 -0
  17. data/lib/dry/validation/macro.rb +38 -0
  18. data/lib/dry/validation/macros.rb +104 -0
  19. data/lib/dry/validation/message.rb +80 -80
  20. data/lib/dry/validation/message_set.rb +80 -105
  21. data/lib/dry/validation/messages/resolver.rb +131 -0
  22. data/lib/dry/validation/result.rb +183 -41
  23. data/lib/dry/validation/rule.rb +135 -0
  24. data/lib/dry/validation/schema_ext.rb +19 -0
  25. data/lib/dry/validation/values.rb +104 -0
  26. data/lib/dry/validation/version.rb +3 -1
  27. data/lib/dry/validation.rb +45 -28
  28. data/lib/dry-validation.rb +3 -1
  29. metadata +46 -344
  30. data/.codeclimate.yml +0 -17
  31. data/.gitignore +0 -9
  32. data/.rspec +0 -3
  33. data/.travis.yml +0 -29
  34. data/CONTRIBUTING.md +0 -31
  35. data/Gemfile +0 -25
  36. data/Rakefile +0 -22
  37. data/benchmarks/benchmark_form_invalid.rb +0 -64
  38. data/benchmarks/benchmark_form_valid.rb +0 -64
  39. data/benchmarks/benchmark_schema_invalid_huge.rb +0 -52
  40. data/benchmarks/profile_schema_call_invalid.rb +0 -20
  41. data/benchmarks/profile_schema_call_valid.rb +0 -20
  42. data/benchmarks/profile_schema_definition.rb +0 -14
  43. data/benchmarks/profile_schema_huge_invalid.rb +0 -30
  44. data/benchmarks/profile_schema_messages_invalid.rb +0 -20
  45. data/benchmarks/suite.rb +0 -5
  46. data/examples/basic.rb +0 -15
  47. data/examples/each.rb +0 -14
  48. data/examples/json.rb +0 -12
  49. data/examples/multiple.rb +0 -27
  50. data/examples/nested.rb +0 -22
  51. data/examples/params.rb +0 -11
  52. data/lib/dry/validation/compat/form.rb +0 -67
  53. data/lib/dry/validation/deprecations.rb +0 -24
  54. data/lib/dry/validation/executor.rb +0 -91
  55. data/lib/dry/validation/extensions/struct.rb +0 -32
  56. data/lib/dry/validation/extensions.rb +0 -7
  57. data/lib/dry/validation/input_processor_compiler/json.rb +0 -45
  58. data/lib/dry/validation/input_processor_compiler/params.rb +0 -49
  59. data/lib/dry/validation/input_processor_compiler/sanitizer.rb +0 -47
  60. data/lib/dry/validation/input_processor_compiler.rb +0 -137
  61. data/lib/dry/validation/message_compiler/visitor_opts.rb +0 -37
  62. data/lib/dry/validation/message_compiler.rb +0 -188
  63. data/lib/dry/validation/messages/abstract.rb +0 -119
  64. data/lib/dry/validation/messages/i18n.rb +0 -47
  65. data/lib/dry/validation/messages/namespaced.rb +0 -39
  66. data/lib/dry/validation/messages/yaml.rb +0 -61
  67. data/lib/dry/validation/messages.rb +0 -14
  68. data/lib/dry/validation/predicate_registry.rb +0 -115
  69. data/lib/dry/validation/predicates.rb +0 -19
  70. data/lib/dry/validation/schema/check.rb +0 -37
  71. data/lib/dry/validation/schema/class_interface.rb +0 -190
  72. data/lib/dry/validation/schema/deprecated.rb +0 -30
  73. data/lib/dry/validation/schema/dsl.rb +0 -118
  74. data/lib/dry/validation/schema/form.rb +0 -9
  75. data/lib/dry/validation/schema/json.rb +0 -21
  76. data/lib/dry/validation/schema/key.rb +0 -71
  77. data/lib/dry/validation/schema/params.rb +0 -22
  78. data/lib/dry/validation/schema/rule.rb +0 -202
  79. data/lib/dry/validation/schema/value.rb +0 -211
  80. data/lib/dry/validation/schema.rb +0 -126
  81. data/lib/dry/validation/schema_compiler.rb +0 -81
  82. data/lib/dry/validation/template.rb +0 -66
  83. data/lib/dry/validation/type_specs.rb +0 -70
  84. data/log/.gitkeep +0 -0
  85. data/spec/extensions/monads/result_spec.rb +0 -40
  86. data/spec/extensions/struct/schema_spec.rb +0 -32
  87. data/spec/fixtures/locales/en.yml +0 -8
  88. data/spec/fixtures/locales/pl.yml +0 -22
  89. data/spec/integration/custom_error_messages_spec.rb +0 -54
  90. data/spec/integration/custom_predicates_spec.rb +0 -228
  91. data/spec/integration/hints_spec.rb +0 -170
  92. data/spec/integration/injecting_rules_spec.rb +0 -30
  93. data/spec/integration/json/defining_base_schema_spec.rb +0 -41
  94. data/spec/integration/localized_error_messages_spec.rb +0 -72
  95. data/spec/integration/message_compiler_spec.rb +0 -405
  96. data/spec/integration/messages/i18n_spec.rb +0 -104
  97. data/spec/integration/optional_keys_spec.rb +0 -28
  98. data/spec/integration/params/predicates/array_spec.rb +0 -287
  99. data/spec/integration/params/predicates/empty_spec.rb +0 -263
  100. data/spec/integration/params/predicates/eql_spec.rb +0 -327
  101. data/spec/integration/params/predicates/even_spec.rb +0 -455
  102. data/spec/integration/params/predicates/excluded_from_spec.rb +0 -455
  103. data/spec/integration/params/predicates/excludes_spec.rb +0 -391
  104. data/spec/integration/params/predicates/false_spec.rb +0 -455
  105. data/spec/integration/params/predicates/filled_spec.rb +0 -467
  106. data/spec/integration/params/predicates/format_spec.rb +0 -454
  107. data/spec/integration/params/predicates/gt_spec.rb +0 -519
  108. data/spec/integration/params/predicates/gteq_spec.rb +0 -519
  109. data/spec/integration/params/predicates/included_in_spec.rb +0 -455
  110. data/spec/integration/params/predicates/includes_spec.rb +0 -391
  111. data/spec/integration/params/predicates/key_spec.rb +0 -67
  112. data/spec/integration/params/predicates/lt_spec.rb +0 -519
  113. data/spec/integration/params/predicates/lteq_spec.rb +0 -519
  114. data/spec/integration/params/predicates/max_size_spec.rb +0 -391
  115. data/spec/integration/params/predicates/min_size_spec.rb +0 -391
  116. data/spec/integration/params/predicates/none_spec.rb +0 -265
  117. data/spec/integration/params/predicates/not_eql_spec.rb +0 -327
  118. data/spec/integration/params/predicates/odd_spec.rb +0 -455
  119. data/spec/integration/params/predicates/size/fixed_spec.rb +0 -393
  120. data/spec/integration/params/predicates/size/range_spec.rb +0 -396
  121. data/spec/integration/params/predicates/true_spec.rb +0 -455
  122. data/spec/integration/params/predicates/type_spec.rb +0 -391
  123. data/spec/integration/result_spec.rb +0 -81
  124. data/spec/integration/schema/array_schema_spec.rb +0 -59
  125. data/spec/integration/schema/check_rules_spec.rb +0 -119
  126. data/spec/integration/schema/check_with_nested_el_spec.rb +0 -37
  127. data/spec/integration/schema/check_with_nth_el_spec.rb +0 -25
  128. data/spec/integration/schema/default_settings_spec.rb +0 -11
  129. data/spec/integration/schema/defining_base_schema_spec.rb +0 -41
  130. data/spec/integration/schema/dynamic_predicate_args_spec.rb +0 -43
  131. data/spec/integration/schema/each_with_set_spec.rb +0 -70
  132. data/spec/integration/schema/extending_dsl_spec.rb +0 -27
  133. data/spec/integration/schema/form_spec.rb +0 -236
  134. data/spec/integration/schema/hash_schema_spec.rb +0 -47
  135. data/spec/integration/schema/inheriting_schema_spec.rb +0 -31
  136. data/spec/integration/schema/input_processor_spec.rb +0 -46
  137. data/spec/integration/schema/json/explicit_types_spec.rb +0 -157
  138. data/spec/integration/schema/json_spec.rb +0 -163
  139. data/spec/integration/schema/macros/confirmation_spec.rb +0 -35
  140. data/spec/integration/schema/macros/each_spec.rb +0 -268
  141. data/spec/integration/schema/macros/filled_spec.rb +0 -87
  142. data/spec/integration/schema/macros/input_spec.rb +0 -139
  143. data/spec/integration/schema/macros/maybe_spec.rb +0 -99
  144. data/spec/integration/schema/macros/rule_spec.rb +0 -75
  145. data/spec/integration/schema/macros/value_spec.rb +0 -119
  146. data/spec/integration/schema/macros/when_spec.rb +0 -62
  147. data/spec/integration/schema/nested_schemas_spec.rb +0 -236
  148. data/spec/integration/schema/nested_values_spec.rb +0 -46
  149. data/spec/integration/schema/not_spec.rb +0 -34
  150. data/spec/integration/schema/numbers_spec.rb +0 -19
  151. data/spec/integration/schema/option_with_default_spec.rb +0 -64
  152. data/spec/integration/schema/or_spec.rb +0 -87
  153. data/spec/integration/schema/params/defining_base_schema_spec.rb +0 -41
  154. data/spec/integration/schema/params/explicit_types_spec.rb +0 -195
  155. data/spec/integration/schema/params_spec.rb +0 -234
  156. data/spec/integration/schema/predicate_verification_spec.rb +0 -9
  157. data/spec/integration/schema/predicates/array_spec.rb +0 -295
  158. data/spec/integration/schema/predicates/custom_spec.rb +0 -103
  159. data/spec/integration/schema/predicates/empty_spec.rb +0 -263
  160. data/spec/integration/schema/predicates/eql_spec.rb +0 -327
  161. data/spec/integration/schema/predicates/even_spec.rb +0 -455
  162. data/spec/integration/schema/predicates/excluded_from/array_spec.rb +0 -459
  163. data/spec/integration/schema/predicates/excluded_from/range_spec.rb +0 -459
  164. data/spec/integration/schema/predicates/excludes_spec.rb +0 -391
  165. data/spec/integration/schema/predicates/filled_spec.rb +0 -467
  166. data/spec/integration/schema/predicates/format_spec.rb +0 -455
  167. data/spec/integration/schema/predicates/gt_spec.rb +0 -519
  168. data/spec/integration/schema/predicates/gteq_spec.rb +0 -519
  169. data/spec/integration/schema/predicates/hash_spec.rb +0 -69
  170. data/spec/integration/schema/predicates/included_in/array_spec.rb +0 -459
  171. data/spec/integration/schema/predicates/included_in/range_spec.rb +0 -459
  172. data/spec/integration/schema/predicates/includes_spec.rb +0 -391
  173. data/spec/integration/schema/predicates/key_spec.rb +0 -88
  174. data/spec/integration/schema/predicates/lt_spec.rb +0 -520
  175. data/spec/integration/schema/predicates/lteq_spec.rb +0 -519
  176. data/spec/integration/schema/predicates/max_size_spec.rb +0 -391
  177. data/spec/integration/schema/predicates/min_size_spec.rb +0 -391
  178. data/spec/integration/schema/predicates/none_spec.rb +0 -265
  179. data/spec/integration/schema/predicates/not_eql_spec.rb +0 -391
  180. data/spec/integration/schema/predicates/odd_spec.rb +0 -455
  181. data/spec/integration/schema/predicates/size/fixed_spec.rb +0 -398
  182. data/spec/integration/schema/predicates/size/range_spec.rb +0 -395
  183. data/spec/integration/schema/predicates/type_spec.rb +0 -413
  184. data/spec/integration/schema/reusing_schema_spec.rb +0 -33
  185. data/spec/integration/schema/using_types_spec.rb +0 -135
  186. data/spec/integration/schema/validate_spec.rb +0 -120
  187. data/spec/integration/schema/xor_spec.rb +0 -35
  188. data/spec/integration/schema_builders_spec.rb +0 -17
  189. data/spec/integration/schema_spec.rb +0 -173
  190. data/spec/shared/message_compiler.rb +0 -11
  191. data/spec/shared/predicate_helper.rb +0 -15
  192. data/spec/shared/rule_compiler.rb +0 -8
  193. data/spec/spec_helper.rb +0 -62
  194. data/spec/support/define_struct.rb +0 -25
  195. data/spec/support/matchers.rb +0 -38
  196. data/spec/support/mutant.rb +0 -9
  197. data/spec/support/predicates_integration.rb +0 -7
  198. data/spec/unit/input_processor_compiler/json_spec.rb +0 -283
  199. data/spec/unit/input_processor_compiler/params_spec.rb +0 -328
  200. data/spec/unit/message_compiler/visit_failure_spec.rb +0 -38
  201. data/spec/unit/message_compiler/visit_spec.rb +0 -16
  202. data/spec/unit/message_compiler_spec.rb +0 -7
  203. data/spec/unit/predicate_registry_spec.rb +0 -34
  204. data/spec/unit/schema/key_spec.rb +0 -38
  205. data/spec/unit/schema/rule_spec.rb +0 -42
  206. data/spec/unit/schema/value_spec.rb +0 -131
  207. data/spec/unit/schema_spec.rb +0 -35
@@ -1,395 +0,0 @@
1
- RSpec.describe 'Predicates: Size' do
2
- context 'Range' do
3
- context 'with required' do
4
- subject(:schema) do
5
- Dry::Validation.Schema do
6
- required(:foo) { size?(2..3) }
7
- end
8
- end
9
-
10
- context 'with valid input' do
11
- let(:input) { { foo: [1, 2, 3] } }
12
-
13
- it 'is successful' do
14
- expect(result).to be_successful
15
- end
16
- end
17
-
18
- context 'with missing input' do
19
- let(:input) { {} }
20
-
21
- it 'is not successful' do
22
- expect(result).to be_failing ['is missing', 'size must be within 2 - 3']
23
- end
24
- end
25
-
26
- context 'with nil input' do
27
- let(:input) { { foo: nil } }
28
-
29
- it 'raises error' do
30
- expect { result }.to raise_error(NoMethodError)
31
- end
32
- end
33
-
34
- context 'with blank input' do
35
- let(:input) { { foo: '' } }
36
-
37
- it 'is not successful' do
38
- expect(result).to be_failing ['length must be within 2 - 3']
39
- end
40
- end
41
-
42
- context 'with invalid input' do
43
- let(:input) { { foo: { a: 1, b: 2, c: 3, d: 4 } } }
44
-
45
- it 'is not successful' do
46
- expect(result).to be_failing ['size must be within 2 - 3']
47
- end
48
- end
49
- end
50
-
51
- context 'with optional' do
52
- subject(:schema) do
53
- Dry::Validation.Schema do
54
- optional(:foo) { size?(2..3) }
55
- end
56
- end
57
-
58
- context 'with valid input' do
59
- let(:input) { { foo: [1, 2, 3] } }
60
-
61
- it 'is successful' do
62
- expect(result).to be_successful
63
- end
64
- end
65
-
66
- context 'with missing input' do
67
- let(:input) { {} }
68
-
69
- it 'is successful' do
70
- expect(result).to be_successful
71
- end
72
- end
73
-
74
- context 'with nil input' do
75
- let(:input) { { foo: nil } }
76
-
77
- it 'raises error' do
78
- expect { result }.to raise_error(NoMethodError)
79
- end
80
- end
81
-
82
- context 'with blank input' do
83
- let(:input) { { foo: '' } }
84
-
85
- it 'is not successful' do
86
- expect(result).to be_failing ['length must be within 2 - 3']
87
- end
88
- end
89
-
90
- context 'with invalid input' do
91
- let(:input) { { foo: { a: 1, b: 2, c: 3, d: 4 } } }
92
-
93
- it 'is not successful' do
94
- expect(result).to be_failing ['size must be within 2 - 3']
95
- end
96
- end
97
- end
98
-
99
- context 'as macro' do
100
- context 'with required' do
101
- context 'with value' do
102
- subject(:schema) do
103
- Dry::Validation.Schema do
104
- required(:foo).value(size?: 2..3)
105
- end
106
- end
107
-
108
- context 'with valid input' do
109
- let(:input) { { foo: [1, 2, 3] } }
110
-
111
- it 'is successful' do
112
- expect(result).to be_successful
113
- end
114
- end
115
-
116
- context 'with missing input' do
117
- let(:input) { {} }
118
-
119
- it 'is not successful' do
120
- expect(result).to be_failing ['is missing', 'size must be within 2 - 3']
121
- end
122
- end
123
-
124
- context 'with nil input' do
125
- let(:input) { { foo: nil } }
126
-
127
- it 'raises error' do
128
- expect { result }.to raise_error(NoMethodError)
129
- end
130
- end
131
-
132
- context 'with blank input' do
133
- let(:input) { { foo: '' } }
134
-
135
- it 'is not successful' do
136
- expect(result).to be_failing ['length must be within 2 - 3']
137
- end
138
- end
139
-
140
- context 'with invalid input' do
141
- let(:input) { { foo: { a: 1, b: 2, c: 3, d: 4 } } }
142
-
143
- it 'is not successful' do
144
- expect(result).to be_failing ['size must be within 2 - 3']
145
- end
146
- end
147
- end
148
-
149
- context 'with filled' do
150
- subject(:schema) do
151
- Dry::Validation.Schema do
152
- required(:foo).filled(size?: 2..3)
153
- end
154
- end
155
-
156
- context 'with valid input' do
157
- let(:input) { { foo: [1, 2, 3] } }
158
-
159
- it 'is successful' do
160
- expect(result).to be_successful
161
- end
162
- end
163
-
164
- context 'with missing input' do
165
- let(:input) { {} }
166
-
167
- it 'is not successful' do
168
- expect(result).to be_failing ['is missing', 'size must be within 2 - 3']
169
- end
170
- end
171
-
172
- context 'with nil input' do
173
- let(:input) { { foo: nil } }
174
-
175
- it 'is not successful' do
176
- expect(result).to be_failing ['must be filled', 'size must be within 2 - 3']
177
- end
178
- end
179
-
180
- context 'with blank input' do
181
- let(:input) { { foo: '' } }
182
-
183
- it 'is not successful' do
184
- expect(result).to be_failing ['must be filled', 'length must be within 2 - 3']
185
- end
186
- end
187
-
188
- context 'with invalid input' do
189
- let(:input) { { foo: { a: 1, b: 2, c: 3, d: 4 } } }
190
-
191
- it 'is not successful' do
192
- expect(result).to be_failing ['size must be within 2 - 3']
193
- end
194
- end
195
- end
196
-
197
- context 'with maybe' do
198
- subject(:schema) do
199
- Dry::Validation.Schema do
200
- required(:foo).maybe(size?: 2..3)
201
- end
202
- end
203
-
204
- context 'with valid input' do
205
- let(:input) { { foo: [1, 2, 3] } }
206
-
207
- it 'is successful' do
208
- expect(result).to be_successful
209
- end
210
- end
211
-
212
- context 'with missing input' do
213
- let(:input) { {} }
214
-
215
- it 'is not successful' do
216
- expect(result).to be_failing ['is missing', 'size must be within 2 - 3']
217
- end
218
- end
219
-
220
- context 'with nil input' do
221
- let(:input) { { foo: nil } }
222
-
223
- it 'is successful' do
224
- expect(result).to be_successful
225
- end
226
- end
227
-
228
- context 'with blank input' do
229
- let(:input) { { foo: '' } }
230
-
231
- it 'is not successful' do
232
- expect(result).to be_failing ['length must be within 2 - 3']
233
- end
234
- end
235
-
236
- context 'with invalid input' do
237
- let(:input) { { foo: { a: 1, b: 2, c: 3, d: 4 } } }
238
-
239
- it 'is not successful' do
240
- expect(result).to be_failing ['size must be within 2 - 3']
241
- end
242
- end
243
- end
244
- end
245
-
246
- context 'with optional' do
247
- context 'with value' do
248
- subject(:schema) do
249
- Dry::Validation.Schema do
250
- optional(:foo).value(size?: 2..3)
251
- end
252
- end
253
-
254
- context 'with valid input' do
255
- let(:input) { { foo: [1, 2, 3] } }
256
-
257
- it 'is successful' do
258
- expect(result).to be_successful
259
- end
260
- end
261
-
262
- context 'with missing input' do
263
- let(:input) { {} }
264
-
265
- it 'is successful' do
266
- expect(result).to be_successful
267
- end
268
- end
269
-
270
- context 'with nil input' do
271
- let(:input) { { foo: nil } }
272
-
273
- it 'raises error' do
274
- expect { result }.to raise_error(NoMethodError)
275
- end
276
- end
277
-
278
- context 'with blank input' do
279
- let(:input) { { foo: '' } }
280
-
281
- #see: https://github.com/dry-rb/dry-validation/issues/121
282
- it 'is not successful' do
283
- expect(result).to be_failing ['length must be within 2 - 3']
284
- end
285
- end
286
-
287
- context 'with invalid input' do
288
- let(:input) { { foo: { a: 1, b: 2, c: 3, d: 4 } } }
289
-
290
- it 'is not successful' do
291
- expect(result).to be_failing ['size must be within 2 - 3']
292
- end
293
- end
294
- end
295
-
296
- context 'with filled' do
297
- subject(:schema) do
298
- Dry::Validation.Schema do
299
- optional(:foo).filled(size?: 2..3)
300
- end
301
- end
302
-
303
- context 'with valid input' do
304
- let(:input) { { foo: [1, 2, 3] } }
305
-
306
- it 'is successful' do
307
- expect(result).to be_successful
308
- end
309
- end
310
-
311
- context 'with missing input' do
312
- let(:input) { {} }
313
-
314
- it 'is successful' do
315
- expect(result).to be_successful
316
- end
317
- end
318
-
319
- context 'with nil input' do
320
- let(:input) { { foo: nil } }
321
-
322
- it 'is not successful' do
323
- expect(result).to be_failing ['must be filled', 'size must be within 2 - 3']
324
- end
325
- end
326
-
327
- context 'with blank input' do
328
- let(:input) { { foo: '' } }
329
-
330
- it 'is not successful' do
331
- expect(result).to be_failing ['must be filled', 'length must be within 2 - 3']
332
- end
333
- end
334
-
335
- context 'with invalid input' do
336
- let(:input) { { foo: { a: 1, b: 2, c: 3, d: 4 } } }
337
-
338
- it 'is not successful' do
339
- expect(result).to be_failing ['size must be within 2 - 3']
340
- end
341
- end
342
- end
343
-
344
- context 'with maybe' do
345
- subject(:schema) do
346
- Dry::Validation.Schema do
347
- optional(:foo).maybe(size?: 2..3)
348
- end
349
- end
350
-
351
- context 'with valid input' do
352
- let(:input) { { foo: [1, 2, 3] } }
353
-
354
- it 'is successful' do
355
- expect(result).to be_successful
356
- end
357
- end
358
-
359
- context 'with missing input' do
360
- let(:input) { {} }
361
-
362
- it 'is successful' do
363
- expect(result).to be_successful
364
- end
365
- end
366
-
367
- context 'with nil input' do
368
- let(:input) { { foo: nil } }
369
-
370
- it 'is successful' do
371
- expect(result).to be_successful
372
- end
373
- end
374
-
375
- context 'with blank input' do
376
- let(:input) { { foo: '' } }
377
-
378
- #see: https://github.com/dry-rb/dry-validation/issues/121
379
- it 'is not successful' do
380
- expect(result).to be_failing ['length must be within 2 - 3']
381
- end
382
- end
383
-
384
- context 'with invalid input' do
385
- let(:input) { { foo: { a: 1, b: 2, c: 3, d: 4 } } }
386
-
387
- it 'is not successful' do
388
- expect(result).to be_failing ['size must be within 2 - 3']
389
- end
390
- end
391
- end
392
- end
393
- end
394
- end
395
- end