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,103 +0,0 @@
|
|
1
|
-
RSpec.describe 'Predicates: custom' do
|
2
|
-
context 'with custom predicate' do
|
3
|
-
subject(:schema) do
|
4
|
-
Dry::Validation.Schema do
|
5
|
-
configure do
|
6
|
-
config.messages_file = 'spec/fixtures/locales/en.yml'
|
7
|
-
|
8
|
-
def email?(current)
|
9
|
-
!current.match(/\@/).nil?
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
required(:foo) { email? }
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
context 'with valid input' do
|
18
|
-
let(:input) { { foo: 'test@dry-rb.org' } }
|
19
|
-
|
20
|
-
it 'is successful' do
|
21
|
-
expect(result).to be_successful
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
context 'with invalid input' do
|
26
|
-
let(:input) { { foo: 'test' } }
|
27
|
-
|
28
|
-
it 'is not successful' do
|
29
|
-
expect(result).to be_failing ['must be an email']
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
context 'with custom predicates as module' do
|
35
|
-
subject(:schema) do
|
36
|
-
Dry::Validation.Schema do
|
37
|
-
configure do
|
38
|
-
config.messages_file = 'spec/fixtures/locales/en.yml'
|
39
|
-
predicates (Module.new do
|
40
|
-
include Dry::Logic::Predicates
|
41
|
-
|
42
|
-
def self.email?(current)
|
43
|
-
!current.match(/\@/).nil?
|
44
|
-
end
|
45
|
-
end)
|
46
|
-
end
|
47
|
-
|
48
|
-
required(:foo) { email? }
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
context 'with valid input' do
|
53
|
-
let(:input) { { foo: 'test@hanamirb.org' } }
|
54
|
-
|
55
|
-
it 'is successful' do
|
56
|
-
expect(result).to be_successful
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
context 'with invalid input' do
|
61
|
-
let(:input) { { foo: 'test' } }
|
62
|
-
|
63
|
-
it 'is successful' do
|
64
|
-
expect(result).to be_failing ['must be an email']
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
context 'without custom predicate' do
|
70
|
-
it 'raises error if try to use an unknown predicate' do
|
71
|
-
expect do
|
72
|
-
Dry::Validation.Schema do
|
73
|
-
required(:foo) { email? }
|
74
|
-
end
|
75
|
-
end.to raise_error(ArgumentError, '+email?+ is not a valid predicate name')
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
context 'with nested validations' do
|
80
|
-
subject(:schema) do
|
81
|
-
Dry::Validation.Schema do
|
82
|
-
required(:details).schema do
|
83
|
-
configure do
|
84
|
-
config.messages_file = 'spec/fixtures/locales/en.yml'
|
85
|
-
|
86
|
-
def odd?(current)
|
87
|
-
current.odd?
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
required(:foo) { odd? }
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
let(:input) { { details: { foo: 2 } } }
|
97
|
-
|
98
|
-
it 'allows groups to define their own custom predicates' do
|
99
|
-
expect(result).to_not be_success
|
100
|
-
expect(result.messages[:details]).to eq(foo: ['must be odd'])
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
@@ -1,263 +0,0 @@
|
|
1
|
-
RSpec.describe 'Predicates: Empty' do
|
2
|
-
context 'with required' do
|
3
|
-
subject(:schema) do
|
4
|
-
Dry::Validation.Schema do
|
5
|
-
required(:foo) { empty? }
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
context 'with valid input (array)' do
|
10
|
-
let(:input) { { foo: [] } }
|
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: {} } }
|
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 empty']
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
context 'with nil input' do
|
34
|
-
let(:input) { { foo: nil } }
|
35
|
-
|
36
|
-
it 'is successful' do
|
37
|
-
expect(result).to be_successful
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
context 'with blank input' do
|
42
|
-
let(:input) { { foo: '' } }
|
43
|
-
|
44
|
-
it 'is successful' do
|
45
|
-
expect(result).to be_successful
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
context 'with invalid input' do
|
50
|
-
let(:input) { { foo: [23] } }
|
51
|
-
|
52
|
-
it 'is not successful' do
|
53
|
-
expect(result).to be_failing ['must be empty']
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
context 'with optional' do
|
59
|
-
subject(:schema) do
|
60
|
-
Dry::Validation.Schema do
|
61
|
-
optional(:foo) { empty? }
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
context 'with valid input (array)' do
|
66
|
-
let(:input) { { foo: [] } }
|
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: {} } }
|
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 successful' do
|
93
|
-
expect(result).to be_successful
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
context 'with blank input' do
|
98
|
-
let(:input) { { foo: '' } }
|
99
|
-
|
100
|
-
it 'is successful' do
|
101
|
-
expect(result).to be_successful
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
context 'with invalid input' do
|
106
|
-
let(:input) { { foo: [23] } }
|
107
|
-
|
108
|
-
it 'is not successful' do
|
109
|
-
expect(result).to be_failing ['must be empty']
|
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.Schema do
|
119
|
-
required(:foo).value(:empty?)
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
context 'with valid input (array)' do
|
124
|
-
let(:input) { { foo: [] } }
|
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: {} } }
|
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 empty']
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
context 'with nil input' do
|
148
|
-
let(:input) { { foo: nil } }
|
149
|
-
|
150
|
-
it 'is successful' do
|
151
|
-
expect(result).to be_successful
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
context 'with blank input' do
|
156
|
-
let(:input) { { foo: '' } }
|
157
|
-
|
158
|
-
it 'is successful' do
|
159
|
-
expect(result).to be_successful
|
160
|
-
end
|
161
|
-
end
|
162
|
-
|
163
|
-
context 'with invalid input' do
|
164
|
-
let(:input) { { foo: [23] } }
|
165
|
-
|
166
|
-
it 'is not successful' do
|
167
|
-
expect(result).to be_failing ['must be empty']
|
168
|
-
end
|
169
|
-
end
|
170
|
-
end
|
171
|
-
|
172
|
-
context 'with filled' do
|
173
|
-
it "raises error" do
|
174
|
-
expect { Dry::Validation.Schema do
|
175
|
-
required(:foo).filled(:empty?)
|
176
|
-
end }.to raise_error InvalidSchemaError
|
177
|
-
end
|
178
|
-
end
|
179
|
-
|
180
|
-
context 'with maybe' do
|
181
|
-
it "raises error" do
|
182
|
-
expect { Dry::Validation.Schema do
|
183
|
-
required(:foo).maybe(:empty?)
|
184
|
-
end }.to raise_error InvalidSchemaError
|
185
|
-
end
|
186
|
-
end
|
187
|
-
end
|
188
|
-
|
189
|
-
context 'with optional' do
|
190
|
-
context 'with value' do
|
191
|
-
subject(:schema) do
|
192
|
-
Dry::Validation.Schema do
|
193
|
-
optional(:foo).value(:empty?)
|
194
|
-
end
|
195
|
-
end
|
196
|
-
|
197
|
-
context 'with valid input (array)' do
|
198
|
-
let(:input) { { foo: [] } }
|
199
|
-
|
200
|
-
it 'is successful' do
|
201
|
-
expect(result).to be_successful
|
202
|
-
end
|
203
|
-
end
|
204
|
-
|
205
|
-
context 'with valid input (hash)' do
|
206
|
-
let(:input) { { foo: {} } }
|
207
|
-
|
208
|
-
it 'is successful' do
|
209
|
-
expect(result).to be_successful
|
210
|
-
end
|
211
|
-
end
|
212
|
-
|
213
|
-
context 'with missing input' do
|
214
|
-
let(:input) { {} }
|
215
|
-
|
216
|
-
it 'is successful' do
|
217
|
-
expect(result).to be_successful
|
218
|
-
end
|
219
|
-
end
|
220
|
-
|
221
|
-
context 'with nil input' do
|
222
|
-
let(:input) { { foo: nil } }
|
223
|
-
|
224
|
-
it 'is successful' do
|
225
|
-
expect(result).to be_successful
|
226
|
-
end
|
227
|
-
end
|
228
|
-
|
229
|
-
context 'with blank input' do
|
230
|
-
let(:input) { { foo: '' } }
|
231
|
-
|
232
|
-
it 'is successful' do
|
233
|
-
expect(result).to be_successful
|
234
|
-
end
|
235
|
-
end
|
236
|
-
|
237
|
-
context 'with invalid input' do
|
238
|
-
let(:input) { { foo: [23] } }
|
239
|
-
|
240
|
-
it 'is not successful' do
|
241
|
-
expect(result).to be_failing ['must be empty']
|
242
|
-
end
|
243
|
-
end
|
244
|
-
end
|
245
|
-
|
246
|
-
context 'with filled' do
|
247
|
-
it "raises error" do
|
248
|
-
expect { Dry::Validation.Schema do
|
249
|
-
optional(:foo).filled(:empty?)
|
250
|
-
end }.to raise_error InvalidSchemaError
|
251
|
-
end
|
252
|
-
end
|
253
|
-
|
254
|
-
context 'with maybe' do
|
255
|
-
it "raises error" do
|
256
|
-
expect { Dry::Validation.Schema do
|
257
|
-
optional(:foo).maybe(:empty?)
|
258
|
-
end }.to raise_error InvalidSchemaError
|
259
|
-
end
|
260
|
-
end
|
261
|
-
end
|
262
|
-
end
|
263
|
-
end
|
@@ -1,327 +0,0 @@
|
|
1
|
-
RSpec.describe 'Predicates: Eql' do
|
2
|
-
context 'with required' do
|
3
|
-
subject(:schema) do
|
4
|
-
Dry::Validation.Schema do
|
5
|
-
required(:foo) { eql?(23) }
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
context 'with valid input' 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 missing input' do
|
18
|
-
let(:input) { {} }
|
19
|
-
|
20
|
-
it 'is not successful' do
|
21
|
-
expect(result).to be_failing ['is missing', 'must be equal to 23']
|
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 equal to 23']
|
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_failing ['must be equal to 23']
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
context 'with optional' do
|
43
|
-
subject(:schema) do
|
44
|
-
Dry::Validation.Schema do
|
45
|
-
optional(:foo) { eql?(23) }
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
context 'with valid input' do
|
50
|
-
let(:input) { { foo: 23 } }
|
51
|
-
|
52
|
-
it 'is successful' do
|
53
|
-
expect(result).to be_successful
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
context 'with missing input' do
|
58
|
-
let(:input) { {} }
|
59
|
-
|
60
|
-
it 'is successful' do
|
61
|
-
expect(result).to be_successful
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
context 'with nil input' do
|
66
|
-
let(:input) { { foo: nil } }
|
67
|
-
|
68
|
-
it 'is not successful' do
|
69
|
-
expect(result).to be_failing ['must be equal to 23']
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
context 'with blank input' do
|
74
|
-
let(:input) { { foo: '' } }
|
75
|
-
|
76
|
-
it 'is not successful' do
|
77
|
-
expect(result).to be_failing ['must be equal to 23']
|
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(eql?: 23)
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
context 'with valid input' do
|
92
|
-
let(:input) { { foo: 23 } }
|
93
|
-
|
94
|
-
it 'is successful' do
|
95
|
-
expect(result).to be_successful
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
context 'with missing input' do
|
100
|
-
let(:input) { {} }
|
101
|
-
|
102
|
-
it 'is not successful' do
|
103
|
-
expect(result).to be_failing ['is missing', 'must be equal to 23']
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
context 'with nil input' do
|
108
|
-
let(:input) { { foo: nil } }
|
109
|
-
|
110
|
-
it 'is not successful' do
|
111
|
-
expect(result).to be_failing ['must be equal to 23']
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
context 'with blank input' do
|
116
|
-
let(:input) { { foo: '' } }
|
117
|
-
|
118
|
-
it 'is not successful' do
|
119
|
-
expect(result).to be_failing ['must be equal to 23']
|
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(eql?: 23)
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
context 'with valid input' do
|
132
|
-
let(:input) { { foo: 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', 'must be equal to 23']
|
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', 'must be equal to 23']
|
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', 'must be equal to 23']
|
160
|
-
end
|
161
|
-
end
|
162
|
-
end
|
163
|
-
|
164
|
-
context 'with maybe' do
|
165
|
-
subject(:schema) do
|
166
|
-
Dry::Validation.Schema do
|
167
|
-
required(:foo).maybe(eql?: 23)
|
168
|
-
end
|
169
|
-
end
|
170
|
-
|
171
|
-
context 'with valid input' do
|
172
|
-
let(:input) { { foo: 23 } }
|
173
|
-
|
174
|
-
it 'is successful' do
|
175
|
-
expect(result).to be_successful
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
|
-
context 'with missing input' do
|
180
|
-
let(:input) { {} }
|
181
|
-
|
182
|
-
it 'is not successful' do
|
183
|
-
expect(result).to be_failing ['is missing', 'must be equal to 23']
|
184
|
-
end
|
185
|
-
end
|
186
|
-
|
187
|
-
context 'with nil input' do
|
188
|
-
let(:input) { { foo: nil } }
|
189
|
-
|
190
|
-
it 'is successful' do
|
191
|
-
expect(result).to be_successful
|
192
|
-
end
|
193
|
-
end
|
194
|
-
|
195
|
-
context 'with blank input' do
|
196
|
-
let(:input) { { foo: '' } }
|
197
|
-
|
198
|
-
it 'is not successful' do
|
199
|
-
expect(result).to be_failing ['must be equal to 23']
|
200
|
-
end
|
201
|
-
end
|
202
|
-
end
|
203
|
-
end
|
204
|
-
|
205
|
-
context 'with optional' do
|
206
|
-
context 'with value' do
|
207
|
-
subject(:schema) do
|
208
|
-
Dry::Validation.Schema do
|
209
|
-
optional(:foo).value(eql?: 23)
|
210
|
-
end
|
211
|
-
end
|
212
|
-
|
213
|
-
context 'with valid input' do
|
214
|
-
let(:input) { { foo: 23 } }
|
215
|
-
|
216
|
-
it 'is successful' do
|
217
|
-
expect(result).to be_successful
|
218
|
-
end
|
219
|
-
end
|
220
|
-
|
221
|
-
context 'with missing input' do
|
222
|
-
let(:input) { {} }
|
223
|
-
|
224
|
-
it 'is successful' do
|
225
|
-
expect(result).to be_successful
|
226
|
-
end
|
227
|
-
end
|
228
|
-
|
229
|
-
context 'with nil input' do
|
230
|
-
let(:input) { { foo: nil } }
|
231
|
-
|
232
|
-
it 'is not successful' do
|
233
|
-
expect(result).to be_failing ['must be equal to 23']
|
234
|
-
end
|
235
|
-
end
|
236
|
-
|
237
|
-
context 'with blank input' do
|
238
|
-
let(:input) { { foo: '' } }
|
239
|
-
|
240
|
-
it 'is not successful' do
|
241
|
-
expect(result).to be_failing ['must be equal to 23']
|
242
|
-
end
|
243
|
-
end
|
244
|
-
end
|
245
|
-
|
246
|
-
context 'with filled' do
|
247
|
-
subject(:schema) do
|
248
|
-
Dry::Validation.Schema do
|
249
|
-
optional(:foo).filled(eql?: 23)
|
250
|
-
end
|
251
|
-
end
|
252
|
-
|
253
|
-
context 'with valid input' do
|
254
|
-
let(:input) { { foo: 23 } }
|
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 not successful' do
|
273
|
-
expect(result).to be_failing ['must be filled', 'must be equal to 23']
|
274
|
-
end
|
275
|
-
end
|
276
|
-
|
277
|
-
context 'with blank input' do
|
278
|
-
let(:input) { { foo: '' } }
|
279
|
-
|
280
|
-
it 'is not successful' do
|
281
|
-
expect(result).to be_failing ['must be filled', 'must be equal to 23']
|
282
|
-
end
|
283
|
-
end
|
284
|
-
end
|
285
|
-
|
286
|
-
context 'with maybe' do
|
287
|
-
subject(:schema) do
|
288
|
-
Dry::Validation.Schema do
|
289
|
-
optional(:foo).maybe(eql?: 23)
|
290
|
-
end
|
291
|
-
end
|
292
|
-
|
293
|
-
context 'with valid input' do
|
294
|
-
let(:input) { { foo: 23 } }
|
295
|
-
|
296
|
-
it 'is successful' do
|
297
|
-
expect(result).to be_successful
|
298
|
-
end
|
299
|
-
end
|
300
|
-
|
301
|
-
context 'with missing input' do
|
302
|
-
let(:input) { {} }
|
303
|
-
|
304
|
-
it 'is successful' do
|
305
|
-
expect(result).to be_successful
|
306
|
-
end
|
307
|
-
end
|
308
|
-
|
309
|
-
context 'with nil input' do
|
310
|
-
let(:input) { { foo: nil } }
|
311
|
-
|
312
|
-
it 'is successful' do
|
313
|
-
expect(result).to be_successful
|
314
|
-
end
|
315
|
-
end
|
316
|
-
|
317
|
-
context 'with blank input' do
|
318
|
-
let(:input) { { foo: '' } }
|
319
|
-
|
320
|
-
it 'is not successful' do
|
321
|
-
expect(result).to be_failing ['must be equal to 23']
|
322
|
-
end
|
323
|
-
end
|
324
|
-
end
|
325
|
-
end
|
326
|
-
end
|
327
|
-
end
|