dry-validation 0.9.1 → 0.9.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6264ea291d1db83bc0c5287b0c30bf169ed7827c
4
- data.tar.gz: 9547e197029c1bd5c2631ff7c2116e283a04a523
3
+ metadata.gz: 671e0b5c9aeccb3851d4d654e82be0d2cc0dc23c
4
+ data.tar.gz: d61862295923a7a6e4cf1dacf733606bf648c9b8
5
5
  SHA512:
6
- metadata.gz: 627e9356d6d2929c3a6df3bb1797a2490f780ebcdfb36e9298e7566e84b18a50613dc693f684b960669b3cb79e0a105e8968bd03f048071ea2fa92296a1c952e
7
- data.tar.gz: 2178df16d678ef40b5e8cdace34962fd014349b0170a36f1eac79b611bef034a605249d79ac01aedce946f70fd95c37420550c235c1f24579a8d66ddd8950737
6
+ metadata.gz: 0d9e4a6203a141ac29630a0a38dd4c29363dd7acd094f4dba55321729d6b036275111bcaae09e1764a5df4ac41c2dfe70c26b73606307c910e6c7eb56981c165
7
+ data.tar.gz: 4439a78095b19e8e1464395eccb49bd17394fb06f9d245e7bc7576fe8c9586067f90c3b46132db56ea967f0f87abcd16425963276fc4841c9b302e7ce8a6d340
@@ -1,3 +1,12 @@
1
+ # v0.9.2 2016-07-13
2
+
3
+ ### Fixed
4
+
5
+ * Constrained types now work with `each` macro (solnic)
6
+ * Array coercion without member type works now ie `required(:arr).maybe(:array?)` (solnic)
7
+
8
+ [Compare v0.9.1...v0.9.2](https://github.com/dryrb/dry-validation/compare/v0.9.1...v0.9.2)
9
+
1
10
  # v0.9.1 2016-07-11
2
11
 
3
12
  ### Fixed
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.add_runtime_dependency 'dry-container', '~> 0.2', '>= 0.2.8'
21
21
  spec.add_runtime_dependency 'dry-equalizer', '~> 0.2'
22
22
  spec.add_runtime_dependency 'dry-logic', '~> 0.3', '>= 0.3.0'
23
- spec.add_runtime_dependency 'dry-types', '~> 0.8', '>= 0.8.0'
23
+ spec.add_runtime_dependency 'dry-types', '~> 0.8', '>= 0.8.1'
24
24
 
25
25
  spec.add_development_dependency 'bundler'
26
26
  spec.add_development_dependency 'rake'
@@ -167,6 +167,10 @@ module Dry
167
167
  schema_class.instance_methods.include?(name)
168
168
  end
169
169
 
170
+ def respond_to?(name)
171
+ self.class.public_methods.include?(name)
172
+ end
173
+
170
174
  private
171
175
 
172
176
  def infer_predicates(predicates, infer_on = self)
@@ -175,6 +179,8 @@ module Dry
175
179
 
176
180
  if name.is_a?(Schema)
177
181
  infer_on.schema(name)
182
+ elsif name.respond_to?(:rule)
183
+ create_rule(name.rule.to_ast)
178
184
  else
179
185
  infer_on.__send__(name, *args)
180
186
  end
@@ -1,5 +1,5 @@
1
1
  module Dry
2
2
  module Validation
3
- VERSION = '0.9.1'.freeze
3
+ VERSION = '0.9.2'.freeze
4
4
  end
5
5
  end
@@ -240,4 +240,48 @@ RSpec.describe 'Predicates: Array' do
240
240
  end
241
241
  end
242
242
  end
243
+
244
+ context 'with maybe macro' do
245
+ subject(:schema) { Dry::Validation.Form { required(:foo).maybe(:array?) } }
246
+
247
+ context 'with empty string' do
248
+ let(:input) { { 'foo' => '' } }
249
+
250
+ it 'is successful' do
251
+ expect(result).to be_successful
252
+ end
253
+ end
254
+
255
+ context 'with nil' do
256
+ let(:input) { { 'foo' => nil } }
257
+
258
+ it 'is successful' do
259
+ expect(result).to be_successful
260
+ end
261
+ end
262
+
263
+ context 'with empty array' do
264
+ let(:input) { { 'foo' => [] } }
265
+
266
+ it 'is successful' do
267
+ expect(result).to be_successful
268
+ end
269
+ end
270
+
271
+ context 'with filled array' do
272
+ let(:input) { { 'foo' => [1, 2, 3] } }
273
+
274
+ it 'is successful' do
275
+ expect(result).to be_successful
276
+ end
277
+ end
278
+
279
+ context 'with invalid value' do
280
+ let(:input) { { 'foo' => 'oops' } }
281
+
282
+ it 'is not successful' do
283
+ expect(result).to be_failing(['must be an array'])
284
+ end
285
+ end
286
+ end
243
287
  end
@@ -108,4 +108,19 @@ RSpec.describe Dry::Validation::Schema, 'defining schema using dry types' do
108
108
  expect(result.to_h).to eql(quantity: 2, percentage: BigDecimal('0.5'), switch: false)
109
109
  end
110
110
  end
111
+
112
+ context 'with each' do
113
+ subject(:schema) do
114
+ Dry::Validation.Schema do
115
+ required(:countries).each(Country)
116
+ end
117
+ end
118
+
119
+ it 'applies type constraint checks to each element' do
120
+ result = schema.(countries: ['Poland', 'Australia'])
121
+
122
+ expect(result).to be_success
123
+ expect(result.to_h).to eql(countries: %w(Poland Australia))
124
+ end
125
+ end
111
126
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-validation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Holland
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-07-11 00:00:00.000000000 Z
12
+ date: 2016-07-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: concurrent-ruby
@@ -108,7 +108,7 @@ dependencies:
108
108
  version: '0.8'
109
109
  - - ">="
110
110
  - !ruby/object:Gem::Version
111
- version: 0.8.0
111
+ version: 0.8.1
112
112
  type: :runtime
113
113
  prerelease: false
114
114
  version_requirements: !ruby/object:Gem::Requirement
@@ -118,7 +118,7 @@ dependencies:
118
118
  version: '0.8'
119
119
  - - ">="
120
120
  - !ruby/object:Gem::Version
121
- version: 0.8.0
121
+ version: 0.8.1
122
122
  - !ruby/object:Gem::Dependency
123
123
  name: bundler
124
124
  requirement: !ruby/object:Gem::Requirement