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