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,391 +0,0 @@
1
- RSpec.describe 'Predicates: Excludes' do
2
- context 'with required' do
3
- subject(:schema) do
4
- Dry::Validation.Params do
5
- required(:foo) { array? { each { int? } & excludes?(1) } }
6
- end
7
- end
8
-
9
- context 'with valid input' do
10
- let(:input) { { 'foo' => ['2', '3', '4'] } }
11
-
12
- it 'is successful' do
13
- expect(result).to be_successful
14
- end
15
- end
16
-
17
- context 'with missing input' do
18
- let(:input) { {} }
19
-
20
- it 'is not successful' do
21
- expect(result).to be_failing ['is missing', 'must not include 1']
22
- end
23
- end
24
-
25
- context 'with nil input' do
26
- let(:input) { { 'foo' => nil } }
27
-
28
- it 'is not successful' do
29
- expect(result).to be_failing ['must be an array', 'must not include 1']
30
- end
31
- end
32
-
33
- context 'with blank input' do
34
- let(:input) { { 'foo' => '' } }
35
-
36
- it 'is successful' do
37
- expect(result).to be_successful
38
- end
39
- end
40
-
41
- context 'with invalid input' do
42
- let(:input) { { 'foo' => ['1', '2', '3'] } }
43
-
44
- it 'is not successful' do
45
- expect(result).to be_failing ['must not include 1']
46
- end
47
- end
48
- end
49
-
50
- context 'with optional' do
51
- subject(:schema) do
52
- Dry::Validation.Params do
53
- optional(:foo) { array? { each { int? } & excludes?(1) } }
54
- end
55
- end
56
-
57
- context 'with valid input' do
58
- let(:input) { { 'foo' => ['2', '3', '4'] } }
59
-
60
- it 'is successful' do
61
- expect(result).to be_successful
62
- end
63
- end
64
-
65
- context 'with missing input' do
66
- let(:input) { {} }
67
-
68
- it 'is successful' do
69
- expect(result).to be_successful
70
- end
71
- end
72
-
73
- context 'with nil input' do
74
- let(:input) { { 'foo' => nil } }
75
-
76
- it 'is not successful' do
77
- expect(result).to be_failing ['must be an array', 'must not include 1']
78
- end
79
- end
80
-
81
- context 'with blank input' do
82
- let(:input) { { 'foo' => '' } }
83
-
84
- it 'is successful' do
85
- expect(result).to be_successful
86
- end
87
- end
88
-
89
- context 'with invalid input' do
90
- let(:input) { { 'foo' => ['1', '2', '3'] } }
91
-
92
- it 'is not successful' do
93
- expect(result).to be_failing ['must not include 1']
94
- end
95
- end
96
- end
97
-
98
- context 'as macro' do
99
- context 'with required' do
100
- context 'with value' do
101
- subject(:schema) do
102
- Dry::Validation.Params do
103
- required(:foo).value(excludes?: "foo")
104
- end
105
- end
106
-
107
- context 'with valid input' do
108
- let(:input) { { 'foo' => "bar" } }
109
-
110
- it 'is successful' do
111
- expect(result).to be_successful
112
- end
113
- end
114
-
115
- context 'with missing input' do
116
- let(:input) { {} }
117
-
118
- it 'is not successful' do
119
- expect(result).to be_failing ['is missing', 'must not include foo']
120
- end
121
- end
122
-
123
- context 'with nil input' do
124
- let(:input) { { 'foo' => nil } }
125
-
126
- it 'is successful' do
127
- expect(result).to be_successful
128
- end
129
- end
130
-
131
- context 'with blank input' do
132
- let(:input) { { 'foo' => '' } }
133
-
134
- it 'is successful' do
135
- expect(result).to be_successful
136
- end
137
- end
138
-
139
- context 'with invalid input' do
140
- let(:input) { { 'foo' => "foo" } }
141
-
142
- it 'is not successful' do
143
- expect(result).to be_failing ['must not include foo']
144
- end
145
- end
146
- end
147
-
148
- context 'with filled' do
149
- subject(:schema) do
150
- Dry::Validation.Params do
151
- required(:foo).filled(excludes?: 'foo')
152
- end
153
- end
154
-
155
- context 'with valid input' do
156
- let(:input) { { 'foo' => "Hello World" } }
157
-
158
- it 'is successful' do
159
- expect(result).to be_successful
160
- end
161
- end
162
-
163
- context 'with missing input' do
164
- let(:input) { {} }
165
-
166
- it 'is not successful' do
167
- expect(result).to be_failing ['is missing', 'must not include foo']
168
- end
169
- end
170
-
171
- context 'with nil input' do
172
- let(:input) { { 'foo' => nil } }
173
-
174
- it 'is not successful' do
175
- expect(result).to be_failing ['must be filled', 'must not include foo']
176
- end
177
- end
178
-
179
- context 'with blank input' do
180
- let(:input) { { 'foo' => '' } }
181
-
182
- it 'is not successful' do
183
- expect(result).to be_failing ['must be filled', 'must not include foo']
184
- end
185
- end
186
-
187
- context 'with invalid input' do
188
- let(:input) { { 'foo' => "foo bar" } }
189
-
190
- it 'is not successful' do
191
- expect(result).to be_failing ['must not include foo']
192
- end
193
- end
194
- end
195
-
196
- context 'with maybe' do
197
- subject(:schema) do
198
- Dry::Validation.Params do
199
- required(:foo).maybe(excludes?: 'foo')
200
- end
201
- end
202
-
203
- context 'with valid input' do
204
- let(:input) { { 'foo' => "Hello World" } }
205
-
206
- it 'is successful' do
207
- expect(result).to be_successful
208
- end
209
- end
210
-
211
- context 'with missing input' do
212
- let(:input) { {} }
213
-
214
- it 'is not successful' do
215
- expect(result).to be_failing ['is missing', 'must not include foo']
216
- end
217
- end
218
-
219
- context 'with nil input' do
220
- let(:input) { { 'foo' => nil } }
221
-
222
- it 'is successful' do
223
- expect(result).to be_successful
224
- end
225
- end
226
-
227
- context 'with blank input' do
228
- let(:input) { { 'foo' => '' } }
229
-
230
- it 'is successful' do
231
- expect(result).to be_successful
232
- end
233
- end
234
-
235
- context 'with invalid input' do
236
- let(:input) { { 'foo' => "foo bar" } }
237
-
238
- it 'is not successful' do
239
- expect(result).to be_failing ['must not include foo']
240
- end
241
- end
242
- end
243
- end
244
-
245
- context 'with optional' do
246
- context 'with value' do
247
- subject(:schema) do
248
- Dry::Validation.Params do
249
- optional(:foo).value(excludes?: '1')
250
- end
251
- end
252
-
253
- context 'with valid input' do
254
- let(:input) { { 'foo' => ['2', '3', '4'] } }
255
-
256
- it 'is successful' do
257
- expect(result).to be_successful
258
- end
259
- end
260
-
261
- context 'with missing input' do
262
- let(:input) { {} }
263
-
264
- it 'is successful' do
265
- expect(result).to be_successful
266
- end
267
- end
268
-
269
- context 'with nil input' do
270
- let(:input) { { 'foo' => nil } }
271
-
272
- it 'is successful' do
273
- expect(result).to be_successful
274
- end
275
- end
276
-
277
- context 'with blank input' do
278
- let(:input) { { 'foo' => '' } }
279
-
280
- it 'is successful' do
281
- expect(result).to be_successful
282
- end
283
- end
284
-
285
- context 'with invalid input' do
286
- let(:input) { { 'foo' => ['1', '2', '3'] } }
287
-
288
- it 'is not successful' do
289
- expect(result).to be_failing ['must not include 1']
290
- end
291
- end
292
- end
293
-
294
- context 'with filled' do
295
- subject(:schema) do
296
- Dry::Validation.Params do
297
- optional(:foo).filled(excludes?: 'foo')
298
- end
299
- end
300
-
301
- context 'with valid input' do
302
- let(:input) { { 'foo' => 'bar' } }
303
-
304
- it 'is successful' do
305
- expect(result).to be_successful
306
- end
307
- end
308
-
309
- context 'with missing input' do
310
- let(:input) { {} }
311
-
312
- it 'is successful' do
313
- expect(result).to be_successful
314
- end
315
- end
316
-
317
- context 'with nil input' do
318
- let(:input) { { 'foo' => nil } }
319
-
320
- it 'is not successful' do
321
- expect(result).to be_failing ['must be filled', 'must not include foo']
322
- end
323
- end
324
-
325
- context 'with blank input' do
326
- let(:input) { { 'foo' => '' } }
327
-
328
- it 'is not successful' do
329
- expect(result).to be_failing ['must be filled', 'must not include foo']
330
- end
331
- end
332
-
333
- context 'with invalid input' do
334
- let(:input) { { 'foo' => 'foo' } }
335
-
336
- it 'is not successful' do
337
- expect(result).to be_failing ['must not include foo']
338
- end
339
- end
340
- end
341
-
342
- context 'with maybe' do
343
- subject(:schema) do
344
- Dry::Validation.Params do
345
- optional(:foo).maybe(excludes?: 'foo')
346
- end
347
- end
348
-
349
- context 'with valid input' do
350
- let(:input) { { 'foo' => 'bar' } }
351
-
352
- it 'is successful' do
353
- expect(result).to be_successful
354
- end
355
- end
356
-
357
- context 'with missing input' do
358
- let(:input) { {} }
359
-
360
- it 'is successful' do
361
- expect(result).to be_successful
362
- end
363
- end
364
-
365
- context 'with nil input' do
366
- let(:input) { { 'foo' => nil } }
367
-
368
- it 'is successful' do
369
- expect(result).to be_successful
370
- end
371
- end
372
-
373
- context 'with blank input' do
374
- let(:input) { { 'foo' => '' } }
375
-
376
- it 'is successful' do
377
- expect(result).to be_successful
378
- end
379
- end
380
-
381
- context 'with invalid input' do
382
- let(:input) { { 'foo' => 'foo' } }
383
-
384
- it 'is not successful' do
385
- expect(result).to be_failing ['must not include foo']
386
- end
387
- end
388
- end
389
- end
390
- end
391
- end
@@ -1,455 +0,0 @@
1
- RSpec.describe 'Predicates: False' do
2
- context 'with key' do
3
- subject(:schema) do
4
- Dry::Validation.Params do
5
- required(:foo) { false? }
6
- end
7
- end
8
-
9
- context 'with valid input (1)' do
10
- let(:input) { { 'foo' => '0' } }
11
-
12
- it 'is successful' do
13
- expect(result).to be_successful
14
- end
15
- end
16
-
17
- context 'with valid input (false)' do
18
- let(:input) { { 'foo' => 'false' } }
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', 'must be false']
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 false']
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 false']
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 false']
54
- end
55
- end
56
- end
57
-
58
- context 'with optional' do
59
- subject(:schema) do
60
- Dry::Validation.Params do
61
- optional(:foo) { false? }
62
- end
63
- end
64
-
65
- context 'with valid input (1)' do
66
- let(:input) { { 'foo' => '0' } }
67
-
68
- it 'is successful' do
69
- expect(result).to be_successful
70
- end
71
- end
72
-
73
- context 'with valid input (false)' do
74
- let(:input) { { 'foo' => 'false' } }
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 false']
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 false']
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 false']
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(:false?)
120
- end
121
- end
122
-
123
- context 'with valid input (1)' do
124
- let(:input) { { 'foo' => '0' } }
125
-
126
- it 'is successful' do
127
- expect(result).to be_successful
128
- end
129
- end
130
-
131
- context 'with valid input (false)' do
132
- let(:input) { { 'foo' => 'false' } }
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', 'must be false']
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 false']
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 false']
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 false']
168
- end
169
- end
170
- end
171
-
172
- context 'with filled' do
173
- subject(:schema) do
174
- Dry::Validation.Params do
175
- required(:foo).filled(:false?)
176
- end
177
- end
178
-
179
- context 'with valid input (1)' do
180
- let(:input) { { 'foo' => '0' } }
181
-
182
- it 'is successful' do
183
- expect(result).to be_successful
184
- end
185
- end
186
-
187
- context 'with valid input (false)' do
188
- let(:input) { { 'foo' => 'false' } }
189
-
190
- it 'is successful' do
191
- expect(result).to be_successful
192
- end
193
- end
194
-
195
- context 'with missing input' do
196
- let(:input) { {} }
197
-
198
- it 'is not successful' do
199
- expect(result).to be_failing ['is missing', 'must be false']
200
- end
201
- end
202
-
203
- context 'with nil input' do
204
- let(:input) { { 'foo' => nil } }
205
-
206
- it 'is not successful' do
207
- expect(result).to be_failing ['must be filled', 'must be false']
208
- end
209
- end
210
-
211
- context 'with blank input' do
212
- let(:input) { { 'foo' => '' } }
213
-
214
- it 'is not successful' do
215
- expect(result).to be_failing ['must be filled', 'must be false']
216
- end
217
- end
218
-
219
- context 'with invalid input' do
220
- let(:input) { { 'foo' => [] } }
221
-
222
- it 'is not successful' do
223
- expect(result).to be_failing ['must be filled', 'must be false']
224
- end
225
- end
226
- end
227
-
228
- context 'with maybe' do
229
- subject(:schema) do
230
- Dry::Validation.Params do
231
- required(:foo).maybe(:false?)
232
- end
233
- end
234
-
235
- context 'with valid input (1)' do
236
- let(:input) { { 'foo' => '0' } }
237
-
238
- it 'is successful' do
239
- expect(result).to be_successful
240
- end
241
- end
242
-
243
- context 'with valid input (false)' do
244
- let(:input) { { 'foo' => 'false' } }
245
-
246
- it 'is successful' do
247
- expect(result).to be_successful
248
- end
249
- end
250
-
251
- context 'with missing input' do
252
- let(:input) { {} }
253
-
254
- it 'is not successful' do
255
- expect(result).to be_failing ['is missing', 'must be false']
256
- end
257
- end
258
-
259
- context 'with nil input' do
260
- let(:input) { { 'foo' => nil } }
261
-
262
- it 'is successful' do
263
- expect(result).to be_successful
264
- end
265
- end
266
-
267
- context 'with blank input' do
268
- let(:input) { { 'foo' => '' } }
269
-
270
- it 'is not successful' do
271
- expect(result).to be_success
272
- end
273
- end
274
-
275
- context 'with invalid input' do
276
- let(:input) { { 'foo' => [] } }
277
-
278
- it 'is not successful' do
279
- expect(result).to be_failing ['must be false']
280
- end
281
- end
282
- end
283
- end
284
-
285
- context 'with optional' do
286
- context 'with value' do
287
- subject(:schema) do
288
- Dry::Validation.Params do
289
- optional(:foo).value(:false?)
290
- end
291
- end
292
-
293
- context 'with valid input (1)' do
294
- let(:input) { { 'foo' => '0' } }
295
-
296
- it 'is successful' do
297
- expect(result).to be_successful
298
- end
299
- end
300
-
301
- context 'with valid input (false)' do
302
- let(:input) { { 'foo' => 'false' } }
303
-
304
- it 'is successful' do
305
- expect(result).to be_successful
306
- end
307
- end
308
-
309
- context 'with missing input' do
310
- let(:input) { {} }
311
-
312
- it 'is successful' do
313
- expect(result).to be_successful
314
- end
315
- end
316
-
317
- context 'with nil input' do
318
- let(:input) { { 'foo' => nil } }
319
-
320
- it 'is not successful' do
321
- expect(result).to be_failing ['must be false']
322
- end
323
- end
324
-
325
- context 'with blank input' do
326
- let(:input) { { 'foo' => '' } }
327
-
328
- it 'is not successful' do
329
- expect(result).to be_failing ['must be false']
330
- end
331
- end
332
-
333
- context 'with invalid input' do
334
- let(:input) { { 'foo' => [] } }
335
-
336
- it 'is not successful' do
337
- expect(result).to be_failing ['must be false']
338
- end
339
- end
340
- end
341
-
342
- context 'with filled' do
343
- subject(:schema) do
344
- Dry::Validation.Params do
345
- optional(:foo).filled(:false?)
346
- end
347
- end
348
-
349
- context 'with valid input (1)' do
350
- let(:input) { { 'foo' => '0' } }
351
-
352
- it 'is successful' do
353
- expect(result).to be_successful
354
- end
355
- end
356
-
357
- context 'with valid input (false)' do
358
- let(:input) { { 'foo' => 'false' } }
359
-
360
- it 'is successful' do
361
- expect(result).to be_successful
362
- end
363
- end
364
-
365
- context 'with missing input' do
366
- let(:input) { {} }
367
-
368
- it 'is successful' do
369
- expect(result).to be_successful
370
- end
371
- end
372
-
373
- context 'with nil input' do
374
- let(:input) { { 'foo' => nil } }
375
-
376
- it 'is not successful' do
377
- expect(result).to be_failing ['must be filled', 'must be false']
378
- end
379
- end
380
-
381
- context 'with blank input' do
382
- let(:input) { { 'foo' => '' } }
383
-
384
- it 'is not successful' do
385
- expect(result).to be_failing ['must be filled', 'must be false']
386
- end
387
- end
388
-
389
- context 'with invalid input' do
390
- let(:input) { { 'foo' => [] } }
391
-
392
- it 'is not successful' do
393
- expect(result).to be_failing ['must be filled', 'must be false']
394
- end
395
- end
396
- end
397
-
398
- context 'with maybe' do
399
- subject(:schema) do
400
- Dry::Validation.Params do
401
- optional(:foo).maybe(:false?)
402
- end
403
- end
404
-
405
- context 'with valid input (1)' do
406
- let(:input) { { 'foo' => '0' } }
407
-
408
- it 'is successful' do
409
- expect(result).to be_successful
410
- end
411
- end
412
-
413
- context 'with valid input (false)' do
414
- let(:input) { { 'foo' => 'false' } }
415
-
416
- it 'is successful' do
417
- expect(result).to be_successful
418
- end
419
- end
420
-
421
- context 'with missing input' do
422
- let(:input) { {} }
423
-
424
- it 'is successful' do
425
- expect(result).to be_successful
426
- end
427
- end
428
-
429
- context 'with nil input' do
430
- let(:input) { { 'foo' => nil } }
431
-
432
- it 'is successful' do
433
- expect(result).to be_successful
434
- end
435
- end
436
-
437
- context 'with blank input' do
438
- let(:input) { { 'foo' => '' } }
439
-
440
- it 'is successful' do
441
- expect(result).to be_success
442
- end
443
- end
444
-
445
- context 'with invalid input' do
446
- let(:input) { { 'foo' => [] } }
447
-
448
- it 'is not successful' do
449
- expect(result).to be_failing ['must be false']
450
- end
451
- end
452
- end
453
- end
454
- end
455
- end