dry-validation 0.12.0 → 1.6.0

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 (204) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +696 -239
  3. data/LICENSE +1 -1
  4. data/README.md +15 -12
  5. data/config/errors.yml +3 -88
  6. data/dry-validation.gemspec +31 -17
  7. data/lib/dry-validation.rb +3 -1
  8. data/lib/dry/validation.rb +45 -28
  9. data/lib/dry/validation/config.rb +24 -0
  10. data/lib/dry/validation/constants.rb +43 -0
  11. data/lib/dry/validation/contract.rb +171 -0
  12. data/lib/dry/validation/contract/class_interface.rb +230 -0
  13. data/lib/dry/validation/evaluator.rb +224 -0
  14. data/lib/dry/validation/extensions/hints.rb +67 -0
  15. data/lib/dry/validation/extensions/monads.rb +24 -8
  16. data/lib/dry/validation/extensions/predicates_as_macros.rb +75 -0
  17. data/lib/dry/validation/failures.rb +70 -0
  18. data/lib/dry/validation/function.rb +44 -0
  19. data/lib/dry/validation/macro.rb +38 -0
  20. data/lib/dry/validation/macros.rb +104 -0
  21. data/lib/dry/validation/message.rb +80 -80
  22. data/lib/dry/validation/message_set.rb +80 -105
  23. data/lib/dry/validation/messages/resolver.rb +131 -0
  24. data/lib/dry/validation/result.rb +183 -41
  25. data/lib/dry/validation/rule.rb +135 -0
  26. data/lib/dry/validation/schema_ext.rb +19 -0
  27. data/lib/dry/validation/values.rb +104 -0
  28. data/lib/dry/validation/version.rb +3 -1
  29. metadata +47 -336
  30. data/.codeclimate.yml +0 -17
  31. data/.gitignore +0 -9
  32. data/.rspec +0 -3
  33. data/.travis.yml +0 -26
  34. data/CONTRIBUTING.md +0 -31
  35. data/Gemfile +0 -33
  36. data/Rakefile +0 -22
  37. data/benchmarks/benchmark_form_invalid.rb +0 -64
  38. data/benchmarks/benchmark_form_valid.rb +0 -64
  39. data/benchmarks/benchmark_schema_invalid_huge.rb +0 -52
  40. data/benchmarks/profile_schema_call_invalid.rb +0 -20
  41. data/benchmarks/profile_schema_call_valid.rb +0 -20
  42. data/benchmarks/profile_schema_definition.rb +0 -14
  43. data/benchmarks/profile_schema_huge_invalid.rb +0 -30
  44. data/benchmarks/profile_schema_messages_invalid.rb +0 -20
  45. data/benchmarks/suite.rb +0 -5
  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 -135
  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 -192
  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 -112
  65. data/lib/dry/validation/messages/i18n.rb +0 -35
  66. data/lib/dry/validation/messages/namespaced.rb +0 -32
  67. data/lib/dry/validation/messages/yaml.rb +0 -54
  68. data/lib/dry/validation/predicate_registry.rb +0 -115
  69. data/lib/dry/validation/schema.rb +0 -126
  70. data/lib/dry/validation/schema/check.rb +0 -37
  71. data/lib/dry/validation/schema/class_interface.rb +0 -189
  72. data/lib/dry/validation/schema/deprecated.rb +0 -30
  73. data/lib/dry/validation/schema/dsl.rb +0 -118
  74. data/lib/dry/validation/schema/form.rb +0 -9
  75. data/lib/dry/validation/schema/json.rb +0 -21
  76. data/lib/dry/validation/schema/key.rb +0 -71
  77. data/lib/dry/validation/schema/params.rb +0 -22
  78. data/lib/dry/validation/schema/rule.rb +0 -202
  79. data/lib/dry/validation/schema/value.rb +0 -211
  80. data/lib/dry/validation/schema_compiler.rb +0 -81
  81. data/lib/dry/validation/type_specs.rb +0 -70
  82. data/spec/extensions/monads/result_spec.rb +0 -40
  83. data/spec/extensions/struct/schema_spec.rb +0 -32
  84. data/spec/fixtures/locales/en.yml +0 -6
  85. data/spec/fixtures/locales/pl.yml +0 -18
  86. data/spec/integration/custom_error_messages_spec.rb +0 -48
  87. data/spec/integration/custom_predicates_spec.rb +0 -228
  88. data/spec/integration/hints_spec.rb +0 -170
  89. data/spec/integration/injecting_rules_spec.rb +0 -30
  90. data/spec/integration/json/defining_base_schema_spec.rb +0 -41
  91. data/spec/integration/localized_error_messages_spec.rb +0 -72
  92. data/spec/integration/message_compiler_spec.rb +0 -405
  93. data/spec/integration/messages/i18n_spec.rb +0 -94
  94. data/spec/integration/optional_keys_spec.rb +0 -28
  95. data/spec/integration/params/predicates/array_spec.rb +0 -287
  96. data/spec/integration/params/predicates/empty_spec.rb +0 -263
  97. data/spec/integration/params/predicates/eql_spec.rb +0 -327
  98. data/spec/integration/params/predicates/even_spec.rb +0 -455
  99. data/spec/integration/params/predicates/excluded_from_spec.rb +0 -455
  100. data/spec/integration/params/predicates/excludes_spec.rb +0 -391
  101. data/spec/integration/params/predicates/false_spec.rb +0 -455
  102. data/spec/integration/params/predicates/filled_spec.rb +0 -467
  103. data/spec/integration/params/predicates/format_spec.rb +0 -454
  104. data/spec/integration/params/predicates/gt_spec.rb +0 -519
  105. data/spec/integration/params/predicates/gteq_spec.rb +0 -519
  106. data/spec/integration/params/predicates/included_in_spec.rb +0 -455
  107. data/spec/integration/params/predicates/includes_spec.rb +0 -391
  108. data/spec/integration/params/predicates/key_spec.rb +0 -67
  109. data/spec/integration/params/predicates/lt_spec.rb +0 -519
  110. data/spec/integration/params/predicates/lteq_spec.rb +0 -519
  111. data/spec/integration/params/predicates/max_size_spec.rb +0 -391
  112. data/spec/integration/params/predicates/min_size_spec.rb +0 -391
  113. data/spec/integration/params/predicates/none_spec.rb +0 -265
  114. data/spec/integration/params/predicates/not_eql_spec.rb +0 -327
  115. data/spec/integration/params/predicates/odd_spec.rb +0 -455
  116. data/spec/integration/params/predicates/size/fixed_spec.rb +0 -393
  117. data/spec/integration/params/predicates/size/range_spec.rb +0 -396
  118. data/spec/integration/params/predicates/true_spec.rb +0 -455
  119. data/spec/integration/params/predicates/type_spec.rb +0 -391
  120. data/spec/integration/result_spec.rb +0 -81
  121. data/spec/integration/schema/array_schema_spec.rb +0 -59
  122. data/spec/integration/schema/check_rules_spec.rb +0 -119
  123. data/spec/integration/schema/check_with_nested_el_spec.rb +0 -37
  124. data/spec/integration/schema/check_with_nth_el_spec.rb +0 -25
  125. data/spec/integration/schema/default_settings_spec.rb +0 -11
  126. data/spec/integration/schema/defining_base_schema_spec.rb +0 -41
  127. data/spec/integration/schema/dynamic_predicate_args_spec.rb +0 -43
  128. data/spec/integration/schema/each_with_set_spec.rb +0 -70
  129. data/spec/integration/schema/extending_dsl_spec.rb +0 -27
  130. data/spec/integration/schema/form_spec.rb +0 -236
  131. data/spec/integration/schema/hash_schema_spec.rb +0 -47
  132. data/spec/integration/schema/inheriting_schema_spec.rb +0 -31
  133. data/spec/integration/schema/input_processor_spec.rb +0 -46
  134. data/spec/integration/schema/json/explicit_types_spec.rb +0 -157
  135. data/spec/integration/schema/json_spec.rb +0 -163
  136. data/spec/integration/schema/macros/confirmation_spec.rb +0 -35
  137. data/spec/integration/schema/macros/each_spec.rb +0 -268
  138. data/spec/integration/schema/macros/filled_spec.rb +0 -87
  139. data/spec/integration/schema/macros/input_spec.rb +0 -139
  140. data/spec/integration/schema/macros/maybe_spec.rb +0 -99
  141. data/spec/integration/schema/macros/rule_spec.rb +0 -75
  142. data/spec/integration/schema/macros/value_spec.rb +0 -119
  143. data/spec/integration/schema/macros/when_spec.rb +0 -62
  144. data/spec/integration/schema/nested_schemas_spec.rb +0 -236
  145. data/spec/integration/schema/nested_values_spec.rb +0 -46
  146. data/spec/integration/schema/not_spec.rb +0 -34
  147. data/spec/integration/schema/numbers_spec.rb +0 -19
  148. data/spec/integration/schema/option_with_default_spec.rb +0 -64
  149. data/spec/integration/schema/or_spec.rb +0 -87
  150. data/spec/integration/schema/params/defining_base_schema_spec.rb +0 -41
  151. data/spec/integration/schema/params/explicit_types_spec.rb +0 -195
  152. data/spec/integration/schema/params_spec.rb +0 -234
  153. data/spec/integration/schema/predicate_verification_spec.rb +0 -9
  154. data/spec/integration/schema/predicates/array_spec.rb +0 -295
  155. data/spec/integration/schema/predicates/custom_spec.rb +0 -103
  156. data/spec/integration/schema/predicates/empty_spec.rb +0 -263
  157. data/spec/integration/schema/predicates/eql_spec.rb +0 -327
  158. data/spec/integration/schema/predicates/even_spec.rb +0 -455
  159. data/spec/integration/schema/predicates/excluded_from/array_spec.rb +0 -459
  160. data/spec/integration/schema/predicates/excluded_from/range_spec.rb +0 -459
  161. data/spec/integration/schema/predicates/excludes_spec.rb +0 -391
  162. data/spec/integration/schema/predicates/filled_spec.rb +0 -467
  163. data/spec/integration/schema/predicates/format_spec.rb +0 -455
  164. data/spec/integration/schema/predicates/gt_spec.rb +0 -519
  165. data/spec/integration/schema/predicates/gteq_spec.rb +0 -519
  166. data/spec/integration/schema/predicates/hash_spec.rb +0 -69
  167. data/spec/integration/schema/predicates/included_in/array_spec.rb +0 -459
  168. data/spec/integration/schema/predicates/included_in/range_spec.rb +0 -459
  169. data/spec/integration/schema/predicates/includes_spec.rb +0 -391
  170. data/spec/integration/schema/predicates/key_spec.rb +0 -88
  171. data/spec/integration/schema/predicates/lt_spec.rb +0 -520
  172. data/spec/integration/schema/predicates/lteq_spec.rb +0 -519
  173. data/spec/integration/schema/predicates/max_size_spec.rb +0 -391
  174. data/spec/integration/schema/predicates/min_size_spec.rb +0 -391
  175. data/spec/integration/schema/predicates/none_spec.rb +0 -265
  176. data/spec/integration/schema/predicates/not_eql_spec.rb +0 -391
  177. data/spec/integration/schema/predicates/odd_spec.rb +0 -455
  178. data/spec/integration/schema/predicates/size/fixed_spec.rb +0 -398
  179. data/spec/integration/schema/predicates/size/range_spec.rb +0 -395
  180. data/spec/integration/schema/predicates/type_spec.rb +0 -413
  181. data/spec/integration/schema/reusing_schema_spec.rb +0 -33
  182. data/spec/integration/schema/using_types_spec.rb +0 -135
  183. data/spec/integration/schema/validate_spec.rb +0 -120
  184. data/spec/integration/schema/xor_spec.rb +0 -35
  185. data/spec/integration/schema_builders_spec.rb +0 -17
  186. data/spec/integration/schema_spec.rb +0 -173
  187. data/spec/shared/message_compiler.rb +0 -11
  188. data/spec/shared/predicate_helper.rb +0 -15
  189. data/spec/shared/rule_compiler.rb +0 -8
  190. data/spec/spec_helper.rb +0 -58
  191. data/spec/support/define_struct.rb +0 -25
  192. data/spec/support/matchers.rb +0 -38
  193. data/spec/support/mutant.rb +0 -9
  194. data/spec/support/predicates_integration.rb +0 -7
  195. data/spec/unit/input_processor_compiler/json_spec.rb +0 -283
  196. data/spec/unit/input_processor_compiler/params_spec.rb +0 -328
  197. data/spec/unit/message_compiler/visit_failure_spec.rb +0 -38
  198. data/spec/unit/message_compiler/visit_spec.rb +0 -16
  199. data/spec/unit/message_compiler_spec.rb +0 -7
  200. data/spec/unit/predicate_registry_spec.rb +0 -34
  201. data/spec/unit/schema/key_spec.rb +0 -38
  202. data/spec/unit/schema/rule_spec.rb +0 -42
  203. data/spec/unit/schema/value_spec.rb +0 -131
  204. data/spec/unit/schema_spec.rb +0 -35
@@ -1,120 +0,0 @@
1
- RSpec.describe Dry::Validation::Schema, 'arbitrary validation blocks' do
2
- context 'with a single value' do
3
- subject(:schema) do
4
- Dry::Validation.Schema do
5
- configure do
6
- option :email_regex, /@/
7
-
8
- def self.messages
9
- super.merge(en: { errors: { email?: '%{value} looks like an invalid email' } })
10
- end
11
- end
12
-
13
- required(:email).filled
14
-
15
- validate(email?: :email) do |value|
16
- email_regex.match(value)
17
- end
18
- end
19
- end
20
-
21
- it 'returns success for valid input' do
22
- expect(schema.(email: 'jane@doe.org')).to be_success
23
- end
24
-
25
- it 'returns failure for invalid input' do
26
- expect(schema.(email: 'jane')).to be_failure
27
- end
28
-
29
- it 'adds correct error message' do
30
- expect(schema.(email: 'jane').messages).to eql(
31
- email: ['jane looks like an invalid email']
32
- )
33
- end
34
-
35
- it 'is not executed when deps are invalid' do
36
- expect(schema.(email: nil)).to be_failure
37
- end
38
- end
39
-
40
- context 'with more than one value' do
41
- subject(:schema) do
42
- Dry::Validation.Schema do
43
- configure do
44
- def self.messages
45
- super.merge(en: { errors: { email_required: 'provide email' }})
46
- end
47
- end
48
-
49
- required(:email).maybe(:str?)
50
- required(:newsletter).value(:bool?)
51
-
52
- validate(email_required: %i[newsletter email]) do |newsletter, email|
53
- if newsletter == true
54
- !email.nil?
55
- else
56
- true
57
- end
58
- end
59
- end
60
- end
61
-
62
- it 'returns success for valid input' do
63
- expect(schema.(newsletter: false, email: nil)).to be_success
64
- expect(schema.(newsletter: true, email: 'jane@doe.org')).to be_success
65
- end
66
-
67
- it 'returns failure for invalid input' do
68
- expect(schema.(newsletter: true, email: nil)).to be_failure
69
- end
70
-
71
- it 'adds correct error message' do
72
- expect(schema.(newsletter: true, email: nil).errors).to eql(
73
- email_required: ['provide email']
74
- )
75
- end
76
-
77
- it 'is not executed when deps are invalid' do
78
- expect(schema.(newsletter: 'oops', email: '').errors).to eql(
79
- newsletter: ['must be boolean']
80
- )
81
- end
82
- end
83
-
84
- context 'with more than one validation' do
85
- subject(:schema) do
86
- Dry::Validation.Schema do
87
- configure do
88
- option :email_regex, /@/
89
-
90
- def self.messages
91
- super.merge(en: {
92
- errors: {
93
- email?: '%{value} looks like an invalid email',
94
- google_email?: '%{value} is not a google email'
95
- } })
96
- end
97
- end
98
-
99
- required(:email).filled
100
-
101
- validate(email?: :email) do |value|
102
- email_regex.match(value)
103
- end
104
-
105
- validate(google_email?: :email) do |value|
106
- value.end_with?('@google.com')
107
- end
108
- end
109
- end
110
-
111
- it 'returns errors message for both validate' do
112
- expect(schema.(email: 'jane').messages).to eql(
113
- email: [
114
- 'jane looks like an invalid email',
115
- 'jane is not a google email'
116
- ]
117
- )
118
- end
119
- end
120
- end
@@ -1,35 +0,0 @@
1
- RSpec.describe 'Schema with xor rules' do
2
- subject(:schema) do
3
- Dry::Validation.Schema do
4
- configure do
5
- def self.messages
6
- Messages.default.merge(
7
- en: { errors: { be_reasonable: 'you cannot eat cake and have cake!' } }
8
- )
9
- end
10
- end
11
-
12
- required(:eat_cake).filled
13
-
14
- required(:have_cake).filled
15
-
16
- rule(be_reasonable: %i[eat_cake have_cake]) do |ec, hc|
17
- ec.eql?('yes!') ^ hc.eql?('yes!')
18
- end
19
- end
20
- end
21
-
22
- describe '#messages' do
23
- it 'passes when only one option is selected' do
24
- messages = schema.(eat_cake: 'yes!', have_cake: 'no!').messages[:be_reasonable]
25
-
26
- expect(messages).to be(nil)
27
- end
28
-
29
- it 'fails when both options are selected' do
30
- expect(schema.(eat_cake: 'yes!', have_cake: 'yes!').messages).to eql(
31
- be_reasonable: ['you cannot eat cake and have cake!']
32
- )
33
- end
34
- end
35
- end
@@ -1,17 +0,0 @@
1
- RSpec.describe 'Building schemas' do
2
- describe 'Dry::Validation.Schema' do
3
- it 'builds a schema class with custom predicate set' do
4
- predicates = Module.new do
5
- include Dry::Logic::Predicates
6
-
7
- def zomg?(*)
8
- true
9
- end
10
- end
11
-
12
- schema = Dry::Validation.Schema(predicates: predicates, build: false)
13
-
14
- expect(schema.predicates[:key?]).to be_a(Method)
15
- end
16
- end
17
- end
@@ -1,173 +0,0 @@
1
- RSpec.describe Dry::Validation::Schema, 'defining key-based schema' do
2
- describe 'with a flat structure' do
3
- subject(:schema) do
4
- Dry::Validation.Schema do
5
- configure do
6
- config.input_processor = :params
7
- config.type_specs = true
8
- end
9
-
10
- required(:email, :string).filled
11
- required(:age, [:nil, :integer]) { none? | (int? & gt?(18)) }
12
- end
13
- end
14
-
15
- it 'passes when input is valid' do
16
- expect(schema.(email: 'jane@doe', age: 19)).to be_success
17
- expect(schema.(email: 'jane@doe', age: nil)).to be_success
18
- end
19
-
20
- it 'fails when input is not valid' do
21
- expect(schema.(email: 'jane@doe', age: 17)).to_not be_success
22
- end
23
-
24
- it 'returns result which quacks like hash' do
25
- input = { email: 'jane@doe', age: 19 }
26
- result = schema.(input)
27
-
28
- expect(result[:email]).to eql('jane@doe')
29
- expect(Hash[result]).to eql(input)
30
-
31
- expect(result.to_a).to eql([[:email, 'jane@doe'], [:age, 19]])
32
- end
33
-
34
- describe '#type_map' do
35
- it 'returns key=>type map' do
36
- expect(schema.type_map).to eql(
37
- email: Types::String, age: Types::Params::Nil | Types::Params::Integer
38
- )
39
- end
40
-
41
- it 'uses type_map for input processor when it is not empty' do
42
- expect(schema.(email: 'jane@doe.org', age: '18').to_h).to eql(
43
- email: 'jane@doe.org', age: 18
44
- )
45
- end
46
- end
47
- end
48
-
49
- describe 'with nested structures' do
50
- subject(:schema) do
51
- class Test::CountrySchema
52
- def self.schema
53
- Dry::Validation.Schema do
54
- required(:name).filled
55
- required(:code).filled
56
- end
57
- end
58
- end
59
-
60
- Dry::Validation.Schema do
61
- required(:email).filled
62
-
63
- required(:age).maybe(:int?, gt?: 18)
64
-
65
- required(:address).schema do
66
- required(:city).filled(min_size?: 3)
67
-
68
- required(:street).filled
69
-
70
- required(:country).schema(Test::CountrySchema)
71
- end
72
-
73
- required(:phone_numbers).each(:str?)
74
- end
75
- end
76
-
77
- let(:input) do
78
- {
79
- email: 'jane@doe.org',
80
- age: 19,
81
- address: { city: 'NYC', street: 'Street 1/2', country: { code: 'US', name: 'USA' } },
82
- phone_numbers: [
83
- '123456', '234567'
84
- ]
85
- }.freeze
86
- end
87
-
88
- describe '#messages' do
89
- it 'returns compiled error messages' do
90
- expect(schema.(input.merge(email: '')).messages).to eql(
91
- email: ['must be filled']
92
- )
93
- end
94
- end
95
-
96
- describe '#call' do
97
- it 'passes when attributes are valid' do
98
- expect(schema.(input)).to be_success
99
- end
100
-
101
- it 'validates presence of an email and min age value' do
102
- expect(schema.(input.merge(email: '', age: 18)).messages).to eql(
103
- email: ['must be filled'], age: ['must be greater than 18']
104
- )
105
- end
106
-
107
- it 'validates presence of the email key and type of age value' do
108
- attrs = {
109
- name: 'Jane',
110
- age: '18',
111
- address: input[:address], phone_numbers: input[:phone_numbers]
112
- }
113
-
114
- expect(schema.(attrs).messages).to eql(
115
- email: ['is missing'],
116
- age: ['must be an integer', 'must be greater than 18']
117
- )
118
- end
119
-
120
- it 'validates presence of the address and phone_number keys' do
121
- attrs = { email: 'jane@doe.org', age: 19 }
122
-
123
- expect(schema.(attrs).messages).to eql(
124
- address: ['is missing'], phone_numbers: ['is missing']
125
- )
126
- end
127
-
128
- it 'validates presence of keys under address and min size of the city value' do
129
- attrs = input.merge(address: { city: 'NY' })
130
-
131
- expect(schema.(attrs).messages).to eql(
132
- address: {
133
- street: ['is missing'],
134
- country: ['is missing'],
135
- city: ['size cannot be less than 3']
136
- }
137
- )
138
- end
139
-
140
- it 'validates address type' do
141
- expect(schema.(input.merge(address: 'totally not a hash')).messages).to eql(
142
- address: ['must be a hash']
143
- )
144
- end
145
-
146
- it 'validates address code and name values' do
147
- attrs = input.merge(
148
- address: input[:address].merge(country: { code: 'US', name: '' })
149
- )
150
-
151
- expect(schema.(attrs).messages).to eql(
152
- address: { country: { name: ['must be filled'] } }
153
- )
154
- end
155
-
156
- it 'validates each phone number' do
157
- attrs = input.merge(phone_numbers: ['123', 312])
158
-
159
- expect(schema.(attrs).messages).to eql(
160
- phone_numbers: { 1 => ['must be a string'] }
161
- )
162
- end
163
- end
164
- end
165
-
166
- context 'nested keys' do
167
- it 'raises error when defining nested keys without `schema` block`' do
168
- expect {
169
- Dry::Validation.Schema { required(:foo).value { required(:bar).value(:str?) } }
170
- }.to raise_error(ArgumentError, /required/)
171
- end
172
- end
173
- end
@@ -1,11 +0,0 @@
1
- RSpec.shared_context :message_compiler do
2
- subject(:compiler) { Dry::Validation::MessageCompiler.new(messages) }
3
-
4
- let(:messages) do
5
- Dry::Validation::Messages.default
6
- end
7
-
8
- let(:result) do
9
- compiler.public_send(visitor, node)
10
- end
11
- end
@@ -1,15 +0,0 @@
1
- RSpec.shared_context 'predicate helper' do
2
- def p(name, *args)
3
- Dry::Logic::Rule::Predicate.new(predicates[name], args: args).to_ast
4
- end
5
-
6
- let!(:predicates) do
7
- Module.new {
8
- include Dry::Logic::Predicates
9
-
10
- def self.email?(value)
11
- true
12
- end
13
- }
14
- end
15
- end
@@ -1,8 +0,0 @@
1
- require 'dry/logic/rule_compiler'
2
- require 'dry/logic/predicates'
3
-
4
- RSpec.shared_context 'rule compiler' do
5
- let(:rule_compiler) do
6
- Dry::Logic::RuleCompiler.new(Dry::Logic::Predicates)
7
- end
8
- end
data/spec/spec_helper.rb DELETED
@@ -1,58 +0,0 @@
1
- if ENV['COVERAGE'] == 'true' && RUBY_ENGINE == 'ruby' && RUBY_VERSION == '2.3.1'
2
- require "simplecov"
3
- SimpleCov.start do
4
- add_filter '/spec/'
5
- end
6
- end
7
-
8
- begin
9
- require 'pry'
10
- require 'pry-byebug'
11
- rescue LoadError
12
- end
13
-
14
- require 'dry-validation'
15
- require 'dry/core/constants'
16
- require 'ostruct'
17
-
18
- SPEC_ROOT = Pathname(__dir__)
19
-
20
- Dir[SPEC_ROOT.join('shared/**/*.rb')].each(&method(:require))
21
- Dir[SPEC_ROOT.join('support/**/*.rb')].each(&method(:require))
22
-
23
- include Dry::Validation
24
-
25
- module Types
26
- include Dry::Types.module
27
- end
28
-
29
- Dry::Validation::Deprecations.configure do |config|
30
- config.logger = Logger.new(SPEC_ROOT.join('../log/deprecations.log'))
31
- end
32
-
33
- RSpec.configure do |config|
34
- config.disable_monkey_patching!
35
- config.warnings = true
36
-
37
- config.after do
38
- if defined?(I18n)
39
- I18n.load_path = Dry::Validation.messages_paths.dup
40
- I18n.backend.reload!
41
- end
42
- end
43
-
44
- config.include PredicatesIntegration
45
-
46
- config.before do
47
- module Test
48
- def self.remove_constants
49
- constants.each { |const| remove_const(const) }
50
- self
51
- end
52
- end
53
- end
54
-
55
- config.after do
56
- Object.send(:remove_const, Test.remove_constants.name)
57
- end
58
- end