dry-validation 0.13.3 → 1.3.1

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 (206) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +233 -12
  3. data/LICENSE +1 -1
  4. data/README.md +13 -9
  5. data/config/errors.yml +3 -88
  6. data/lib/dry-validation.rb +2 -0
  7. data/lib/dry/validation.rb +47 -28
  8. data/lib/dry/validation/config.rb +24 -0
  9. data/lib/dry/validation/constants.rb +43 -0
  10. data/lib/dry/validation/contract.rb +160 -0
  11. data/lib/dry/validation/contract/class_interface.rb +223 -0
  12. data/lib/dry/validation/evaluator.rb +197 -0
  13. data/lib/dry/validation/extensions/hints.rb +69 -0
  14. data/lib/dry/validation/extensions/monads.rb +23 -7
  15. data/lib/dry/validation/extensions/predicates_as_macros.rb +75 -0
  16. data/lib/dry/validation/failures.rb +58 -0
  17. data/lib/dry/validation/function.rb +44 -0
  18. data/lib/dry/validation/macro.rb +38 -0
  19. data/lib/dry/validation/macros.rb +104 -0
  20. data/lib/dry/validation/message.rb +79 -79
  21. data/lib/dry/validation/message_set.rb +108 -88
  22. data/lib/dry/validation/messages/resolver.rb +79 -0
  23. data/lib/dry/validation/result.rb +154 -42
  24. data/lib/dry/validation/rule.rb +129 -0
  25. data/lib/dry/validation/schema_ext.rb +46 -0
  26. data/lib/dry/validation/values.rb +94 -0
  27. data/lib/dry/validation/version.rb +3 -1
  28. metadata +41 -336
  29. data/.codeclimate.yml +0 -17
  30. data/.gitignore +0 -9
  31. data/.rspec +0 -3
  32. data/.travis.yml +0 -29
  33. data/CONTRIBUTING.md +0 -31
  34. data/Gemfile +0 -25
  35. data/Rakefile +0 -22
  36. data/benchmarks/benchmark_form_invalid.rb +0 -64
  37. data/benchmarks/benchmark_form_valid.rb +0 -64
  38. data/benchmarks/benchmark_schema_invalid_huge.rb +0 -52
  39. data/benchmarks/profile_schema_call_invalid.rb +0 -20
  40. data/benchmarks/profile_schema_call_valid.rb +0 -20
  41. data/benchmarks/profile_schema_definition.rb +0 -14
  42. data/benchmarks/profile_schema_huge_invalid.rb +0 -30
  43. data/benchmarks/profile_schema_messages_invalid.rb +0 -20
  44. data/benchmarks/suite.rb +0 -5
  45. data/dry-validation.gemspec +0 -28
  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.rb +0 -7
  56. data/lib/dry/validation/extensions/struct.rb +0 -32
  57. data/lib/dry/validation/input_processor_compiler.rb +0 -137
  58. data/lib/dry/validation/input_processor_compiler/json.rb +0 -45
  59. data/lib/dry/validation/input_processor_compiler/params.rb +0 -49
  60. data/lib/dry/validation/input_processor_compiler/sanitizer.rb +0 -47
  61. data/lib/dry/validation/message_compiler.rb +0 -188
  62. data/lib/dry/validation/message_compiler/visitor_opts.rb +0 -37
  63. data/lib/dry/validation/messages.rb +0 -14
  64. data/lib/dry/validation/messages/abstract.rb +0 -119
  65. data/lib/dry/validation/messages/i18n.rb +0 -47
  66. data/lib/dry/validation/messages/namespaced.rb +0 -39
  67. data/lib/dry/validation/messages/yaml.rb +0 -61
  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.rb +0 -126
  71. data/lib/dry/validation/schema/check.rb +0 -37
  72. data/lib/dry/validation/schema/class_interface.rb +0 -190
  73. data/lib/dry/validation/schema/deprecated.rb +0 -30
  74. data/lib/dry/validation/schema/dsl.rb +0 -118
  75. data/lib/dry/validation/schema/form.rb +0 -9
  76. data/lib/dry/validation/schema/json.rb +0 -21
  77. data/lib/dry/validation/schema/key.rb +0 -71
  78. data/lib/dry/validation/schema/params.rb +0 -22
  79. data/lib/dry/validation/schema/rule.rb +0 -202
  80. data/lib/dry/validation/schema/value.rb +0 -211
  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/spec/extensions/monads/result_spec.rb +0 -40
  85. data/spec/extensions/struct/schema_spec.rb +0 -32
  86. data/spec/fixtures/locales/en.yml +0 -8
  87. data/spec/fixtures/locales/pl.yml +0 -22
  88. data/spec/integration/custom_error_messages_spec.rb +0 -54
  89. data/spec/integration/custom_predicates_spec.rb +0 -228
  90. data/spec/integration/hints_spec.rb +0 -170
  91. data/spec/integration/injecting_rules_spec.rb +0 -30
  92. data/spec/integration/json/defining_base_schema_spec.rb +0 -41
  93. data/spec/integration/localized_error_messages_spec.rb +0 -72
  94. data/spec/integration/message_compiler_spec.rb +0 -405
  95. data/spec/integration/messages/i18n_spec.rb +0 -104
  96. data/spec/integration/optional_keys_spec.rb +0 -28
  97. data/spec/integration/params/predicates/array_spec.rb +0 -287
  98. data/spec/integration/params/predicates/empty_spec.rb +0 -263
  99. data/spec/integration/params/predicates/eql_spec.rb +0 -327
  100. data/spec/integration/params/predicates/even_spec.rb +0 -455
  101. data/spec/integration/params/predicates/excluded_from_spec.rb +0 -455
  102. data/spec/integration/params/predicates/excludes_spec.rb +0 -391
  103. data/spec/integration/params/predicates/false_spec.rb +0 -455
  104. data/spec/integration/params/predicates/filled_spec.rb +0 -467
  105. data/spec/integration/params/predicates/format_spec.rb +0 -454
  106. data/spec/integration/params/predicates/gt_spec.rb +0 -519
  107. data/spec/integration/params/predicates/gteq_spec.rb +0 -519
  108. data/spec/integration/params/predicates/included_in_spec.rb +0 -455
  109. data/spec/integration/params/predicates/includes_spec.rb +0 -391
  110. data/spec/integration/params/predicates/key_spec.rb +0 -67
  111. data/spec/integration/params/predicates/lt_spec.rb +0 -519
  112. data/spec/integration/params/predicates/lteq_spec.rb +0 -519
  113. data/spec/integration/params/predicates/max_size_spec.rb +0 -391
  114. data/spec/integration/params/predicates/min_size_spec.rb +0 -391
  115. data/spec/integration/params/predicates/none_spec.rb +0 -265
  116. data/spec/integration/params/predicates/not_eql_spec.rb +0 -327
  117. data/spec/integration/params/predicates/odd_spec.rb +0 -455
  118. data/spec/integration/params/predicates/size/fixed_spec.rb +0 -393
  119. data/spec/integration/params/predicates/size/range_spec.rb +0 -396
  120. data/spec/integration/params/predicates/true_spec.rb +0 -455
  121. data/spec/integration/params/predicates/type_spec.rb +0 -391
  122. data/spec/integration/result_spec.rb +0 -81
  123. data/spec/integration/schema/array_schema_spec.rb +0 -59
  124. data/spec/integration/schema/check_rules_spec.rb +0 -119
  125. data/spec/integration/schema/check_with_nested_el_spec.rb +0 -37
  126. data/spec/integration/schema/check_with_nth_el_spec.rb +0 -25
  127. data/spec/integration/schema/default_settings_spec.rb +0 -11
  128. data/spec/integration/schema/defining_base_schema_spec.rb +0 -41
  129. data/spec/integration/schema/dynamic_predicate_args_spec.rb +0 -43
  130. data/spec/integration/schema/each_with_set_spec.rb +0 -70
  131. data/spec/integration/schema/extending_dsl_spec.rb +0 -27
  132. data/spec/integration/schema/form_spec.rb +0 -236
  133. data/spec/integration/schema/hash_schema_spec.rb +0 -47
  134. data/spec/integration/schema/inheriting_schema_spec.rb +0 -31
  135. data/spec/integration/schema/input_processor_spec.rb +0 -46
  136. data/spec/integration/schema/json/explicit_types_spec.rb +0 -157
  137. data/spec/integration/schema/json_spec.rb +0 -163
  138. data/spec/integration/schema/macros/confirmation_spec.rb +0 -35
  139. data/spec/integration/schema/macros/each_spec.rb +0 -268
  140. data/spec/integration/schema/macros/filled_spec.rb +0 -87
  141. data/spec/integration/schema/macros/input_spec.rb +0 -139
  142. data/spec/integration/schema/macros/maybe_spec.rb +0 -99
  143. data/spec/integration/schema/macros/rule_spec.rb +0 -75
  144. data/spec/integration/schema/macros/value_spec.rb +0 -119
  145. data/spec/integration/schema/macros/when_spec.rb +0 -62
  146. data/spec/integration/schema/nested_schemas_spec.rb +0 -236
  147. data/spec/integration/schema/nested_values_spec.rb +0 -46
  148. data/spec/integration/schema/not_spec.rb +0 -34
  149. data/spec/integration/schema/numbers_spec.rb +0 -19
  150. data/spec/integration/schema/option_with_default_spec.rb +0 -64
  151. data/spec/integration/schema/or_spec.rb +0 -87
  152. data/spec/integration/schema/params/defining_base_schema_spec.rb +0 -41
  153. data/spec/integration/schema/params/explicit_types_spec.rb +0 -195
  154. data/spec/integration/schema/params_spec.rb +0 -234
  155. data/spec/integration/schema/predicate_verification_spec.rb +0 -9
  156. data/spec/integration/schema/predicates/array_spec.rb +0 -295
  157. data/spec/integration/schema/predicates/custom_spec.rb +0 -103
  158. data/spec/integration/schema/predicates/empty_spec.rb +0 -263
  159. data/spec/integration/schema/predicates/eql_spec.rb +0 -327
  160. data/spec/integration/schema/predicates/even_spec.rb +0 -455
  161. data/spec/integration/schema/predicates/excluded_from/array_spec.rb +0 -459
  162. data/spec/integration/schema/predicates/excluded_from/range_spec.rb +0 -459
  163. data/spec/integration/schema/predicates/excludes_spec.rb +0 -391
  164. data/spec/integration/schema/predicates/filled_spec.rb +0 -467
  165. data/spec/integration/schema/predicates/format_spec.rb +0 -455
  166. data/spec/integration/schema/predicates/gt_spec.rb +0 -519
  167. data/spec/integration/schema/predicates/gteq_spec.rb +0 -519
  168. data/spec/integration/schema/predicates/hash_spec.rb +0 -69
  169. data/spec/integration/schema/predicates/included_in/array_spec.rb +0 -459
  170. data/spec/integration/schema/predicates/included_in/range_spec.rb +0 -459
  171. data/spec/integration/schema/predicates/includes_spec.rb +0 -391
  172. data/spec/integration/schema/predicates/key_spec.rb +0 -88
  173. data/spec/integration/schema/predicates/lt_spec.rb +0 -520
  174. data/spec/integration/schema/predicates/lteq_spec.rb +0 -519
  175. data/spec/integration/schema/predicates/max_size_spec.rb +0 -391
  176. data/spec/integration/schema/predicates/min_size_spec.rb +0 -391
  177. data/spec/integration/schema/predicates/none_spec.rb +0 -265
  178. data/spec/integration/schema/predicates/not_eql_spec.rb +0 -391
  179. data/spec/integration/schema/predicates/odd_spec.rb +0 -455
  180. data/spec/integration/schema/predicates/size/fixed_spec.rb +0 -398
  181. data/spec/integration/schema/predicates/size/range_spec.rb +0 -395
  182. data/spec/integration/schema/predicates/type_spec.rb +0 -413
  183. data/spec/integration/schema/reusing_schema_spec.rb +0 -33
  184. data/spec/integration/schema/using_types_spec.rb +0 -135
  185. data/spec/integration/schema/validate_spec.rb +0 -120
  186. data/spec/integration/schema/xor_spec.rb +0 -35
  187. data/spec/integration/schema_builders_spec.rb +0 -17
  188. data/spec/integration/schema_spec.rb +0 -173
  189. data/spec/shared/message_compiler.rb +0 -11
  190. data/spec/shared/predicate_helper.rb +0 -15
  191. data/spec/shared/rule_compiler.rb +0 -8
  192. data/spec/spec_helper.rb +0 -62
  193. data/spec/support/define_struct.rb +0 -25
  194. data/spec/support/matchers.rb +0 -38
  195. data/spec/support/mutant.rb +0 -9
  196. data/spec/support/predicates_integration.rb +0 -7
  197. data/spec/unit/input_processor_compiler/json_spec.rb +0 -283
  198. data/spec/unit/input_processor_compiler/params_spec.rb +0 -328
  199. data/spec/unit/message_compiler/visit_failure_spec.rb +0 -38
  200. data/spec/unit/message_compiler/visit_spec.rb +0 -16
  201. data/spec/unit/message_compiler_spec.rb +0 -7
  202. data/spec/unit/predicate_registry_spec.rb +0 -34
  203. data/spec/unit/schema/key_spec.rb +0 -38
  204. data/spec/unit/schema/rule_spec.rb +0 -42
  205. data/spec/unit/schema/value_spec.rb +0 -131
  206. data/spec/unit/schema_spec.rb +0 -35
@@ -1,265 +0,0 @@
1
- RSpec.describe 'Predicates: None' do
2
- context 'with required' do
3
- subject(:schema) do
4
- Dry::Validation.Schema do
5
- required(:foo) { none? }
6
- end
7
- end
8
-
9
- context 'with missing input' do
10
- let(:input) { {} }
11
-
12
- it 'is not successful' do
13
- expect(result).to be_failing ['is missing']
14
- end
15
- end
16
-
17
- context 'with nil input' do
18
- let(:input) { { foo: nil } }
19
-
20
- it 'is successful' do
21
- expect(result).to be_successful
22
- end
23
- end
24
-
25
- context 'with blank input' do
26
- let(:input) { { foo: '' } }
27
-
28
- it 'is not successful' do
29
- expect(result).to be_failing ['cannot be defined']
30
- end
31
- end
32
-
33
- context 'with other input' do
34
- let(:input) { { foo: 23 } }
35
-
36
- it 'is not successful' do
37
- expect(result).to be_failing ['cannot be defined']
38
- end
39
- end
40
- end
41
-
42
- context 'with optional' do
43
- subject(:schema) do
44
- Dry::Validation.Schema do
45
- optional(:foo) { none? }
46
- end
47
- end
48
-
49
- context 'with missing input' do
50
- let(:input) { {} }
51
-
52
- it 'is successful' do
53
- expect(result).to be_successful
54
- end
55
- end
56
-
57
- context 'with nil input' do
58
- let(:input) { { foo: nil } }
59
-
60
- it 'is successful' do
61
- expect(result).to be_successful
62
- end
63
- end
64
-
65
- context 'with blank input' do
66
- let(:input) { { foo: '' } }
67
-
68
- it 'is not successful' do
69
- expect(result).to be_failing ['cannot be defined']
70
- end
71
- end
72
-
73
- context 'with other input' do
74
- let(:input) { { foo: 23 } }
75
-
76
- it 'is not successful' do
77
- expect(result).to be_failing ['cannot be defined']
78
- end
79
- end
80
- end
81
-
82
- context 'as macro' do
83
- context 'with required' do
84
- context 'with value' do
85
- subject(:schema) do
86
- Dry::Validation.Schema do
87
- required(:foo).value(:none?)
88
- end
89
- end
90
-
91
- context 'with missing input' do
92
- let(:input) { {} }
93
-
94
- it 'is not successful' do
95
- expect(result).to be_failing ['is missing']
96
- end
97
- end
98
-
99
- context 'with nil input' do
100
- let(:input) { { foo: nil } }
101
-
102
- it 'is successful' do
103
- expect(result).to be_successful
104
- end
105
- end
106
-
107
- context 'with blank input' do
108
- let(:input) { { foo: '' } }
109
-
110
- it 'is not successful' do
111
- expect(result).to be_failing ['cannot be defined']
112
- end
113
- end
114
-
115
- context 'with other input' do
116
- let(:input) { { foo: 23 } }
117
-
118
- it 'is not successful' do
119
- expect(result).to be_failing ['cannot be defined']
120
- end
121
- end
122
- end
123
-
124
- context 'with filled' do
125
- subject(:schema) do
126
- Dry::Validation.Schema do
127
- required(:foo).filled(:none?)
128
- end
129
- end
130
-
131
- context 'with missing input' do
132
- let(:input) { {} }
133
-
134
- it 'is not successful' do
135
- expect(result).to be_failing ['is missing']
136
- end
137
- end
138
-
139
- context 'with nil input' do
140
- let(:input) { { foo: nil } }
141
-
142
- it 'is not successful' do
143
- expect(result).to be_failing ['must be filled']
144
- end
145
- end
146
-
147
- context 'with blank input' do
148
- let(:input) { { foo: '' } }
149
-
150
- it 'is not successful' do
151
- expect(result).to be_failing ['must be filled']
152
- end
153
- end
154
-
155
- context 'with other input' do
156
- let(:input) { { foo: 23 } }
157
-
158
- it 'is not successful' do
159
- expect(result).to be_failing ['cannot be defined']
160
- end
161
- end
162
- end
163
-
164
- #makes no sense see: #134
165
- context 'with maybe' do
166
- it "raises error" do
167
- expect { Dry::Validation.Schema do
168
- required(:foo).maybe(:none?)
169
- end }.to raise_error InvalidSchemaError
170
- end
171
- end
172
- end
173
-
174
- context 'with optional' do
175
- context 'with value' do
176
- subject(:schema) do
177
- Dry::Validation.Schema do
178
- optional(:foo).value(:none?)
179
- end
180
- end
181
-
182
- context 'with missing input' do
183
- let(:input) { {} }
184
-
185
- it 'is successful' do
186
- expect(result).to be_successful
187
- end
188
- end
189
-
190
- context 'with nil input' do
191
- let(:input) { { foo: nil } }
192
-
193
- it 'is successful' do
194
- expect(result).to be_successful
195
- end
196
- end
197
-
198
- context 'with blank input' do
199
- let(:input) { { foo: '' } }
200
-
201
- it 'is not successful' do
202
- expect(result).to be_failing ['cannot be defined']
203
- end
204
- end
205
-
206
- context 'with other input' do
207
- let(:input) { { foo: 23 } }
208
-
209
- it 'is not successful' do
210
- expect(result).to be_failing ['cannot be defined']
211
- end
212
- end
213
- end
214
-
215
- context 'with filled' do
216
- subject(:schema) do
217
- Dry::Validation.Schema do
218
- optional(:foo).filled(:none?)
219
- end
220
- end
221
-
222
- context 'with missing input' do
223
- let(:input) { {} }
224
-
225
- it 'is successful' do
226
- expect(result).to be_successful
227
- end
228
- end
229
-
230
- context 'with nil input' do
231
- let(:input) { { foo: nil } }
232
-
233
- it 'is not successful' do
234
- expect(result).to be_failing ['must be filled']
235
- end
236
- end
237
-
238
- context 'with blank input' do
239
- let(:input) { { foo: '' } }
240
-
241
- it 'is not successful' do
242
- expect(result).to be_failing ['must be filled']
243
- end
244
- end
245
-
246
- context 'with other input' do
247
- let(:input) { { foo: 23 } }
248
-
249
- it 'is not successful' do
250
- expect(result).to be_failing ['cannot be defined']
251
- end
252
- end
253
- end
254
-
255
- #makes no sense see: #134
256
- context 'with maybe' do
257
- it "raises error" do
258
- expect { Dry::Validation.Schema do
259
- optional(:foo).maybe(:none?)
260
- end }.to raise_error InvalidSchemaError
261
- end
262
- end
263
- end
264
- end
265
- end
@@ -1,391 +0,0 @@
1
- RSpec.describe 'Predicates: Not Eql' do
2
- context 'with required' do
3
- subject(:schema) do
4
- Dry::Validation.Schema do
5
- required(:foo) { not_eql?(23) }
6
- end
7
- end
8
-
9
- context 'with valid input' do
10
- let(:input) { { foo: 21 } }
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 be equal to 23']
22
- end
23
- end
24
-
25
- context 'with nil input' do
26
- let(:input) { { foo: nil } }
27
-
28
- it 'is successful' do
29
- expect(result).to be_successful
30
- end
31
- end
32
-
33
- context 'with blank input' do
34
- let(:input) { { foo: '' } }
35
-
36
- it 'is not successful' do
37
- expect(result).to be_successful
38
- end
39
- end
40
-
41
- context 'with equal input' do
42
- let(:input) { { foo: 23 } }
43
-
44
- it 'is not successful' do
45
- expect(result).to be_failing ["must not be equal to 23"]
46
- end
47
- end
48
- end
49
-
50
- context 'with optional' do
51
- subject(:schema) do
52
- Dry::Validation.Schema do
53
- optional(:foo) { not_eql?(23) }
54
- end
55
- end
56
-
57
- context 'with valid input' do
58
- let(:input) { { foo: 21 } }
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 successful' do
77
- expect(result).to be_successful
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 equal input' do
90
- let(:input) { { foo: 23 } }
91
-
92
- it 'is not successful' do
93
- expect(result).to be_failing ["must not be equal to 23"]
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.Schema do
103
- required(:foo).value(not_eql?: 23)
104
- end
105
- end
106
-
107
- context 'with valid input' do
108
- let(:input) { { foo: 21 } }
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 be equal to 23']
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 equal input' do
140
- let(:input) { { foo: 23 } }
141
-
142
- it 'is not successful' do
143
- expect(result).to be_failing ["must not be equal to 23"]
144
- end
145
- end
146
- end
147
-
148
- context 'with filled' do
149
- subject(:schema) do
150
- Dry::Validation.Schema do
151
- required(:foo).filled(not_eql?: 23)
152
- end
153
- end
154
-
155
- context 'with valid input' do
156
- let(:input) { { foo: 21 } }
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 be equal to 23']
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 be equal to 23']
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 be equal to 23']
184
- end
185
- end
186
-
187
- context 'with equal input' do
188
- let(:input) { { foo: 23 } }
189
-
190
- it 'is not successful' do
191
- expect(result).to be_failing ["must not be equal to 23"]
192
- end
193
- end
194
- end
195
-
196
- context 'with maybe' do
197
- subject(:schema) do
198
- Dry::Validation.Schema do
199
- required(:foo).maybe(not_eql?: 23)
200
- end
201
- end
202
-
203
- context 'with valid input' do
204
- let(:input) { { foo: 21 } }
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 be equal to 23']
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 equal input' do
236
- let(:input) { { foo: 23 } }
237
-
238
- it 'is not successful' do
239
- expect(result).to be_failing ["must not be equal to 23"]
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.Schema do
249
- optional(:foo).value(not_eql?: 23)
250
- end
251
- end
252
-
253
- context 'with valid input' do
254
- let(:input) { { foo: 21 } }
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 equal input' do
286
- let(:input) { { foo: 23 } }
287
-
288
- it 'is not successful' do
289
- expect(result).to be_failing ["must not be equal to 23"]
290
- end
291
- end
292
- end
293
-
294
- context 'with filled' do
295
- subject(:schema) do
296
- Dry::Validation.Schema do
297
- optional(:foo).filled(not_eql?: 23)
298
- end
299
- end
300
-
301
- context 'with valid input' do
302
- let(:input) { { foo: 21 } }
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 be equal to 23']
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 be equal to 23']
330
- end
331
- end
332
-
333
- context 'with equal input' do
334
- let(:input) { { foo: 23 } }
335
-
336
- it 'is not successful' do
337
- expect(result).to be_failing ["must not be equal to 23"]
338
- end
339
- end
340
- end
341
-
342
- context 'with maybe' do
343
- subject(:schema) do
344
- Dry::Validation.Schema do
345
- optional(:foo).maybe(not_eql?: 23)
346
- end
347
- end
348
-
349
- context 'with valid input' do
350
- let(:input) { { foo: 21 } }
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 equal input' do
382
- let(:input) { { foo: 23 } }
383
-
384
- it 'is not successful' do
385
- expect(result).to be_failing ["must not be equal to 23"]
386
- end
387
- end
388
- end
389
- end
390
- end
391
- end