dry-validation 0.13.3 → 1.0.0.alpha1

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