compel 0.3.1 → 0.3.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 +4 -4
- data/README.md +2 -2
- data/lib/compel/validators/type_validator.rb +9 -2
- data/lib/compel/version.rb +1 -1
- data/spec/compel/builder_spec.rb +25 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dd41d8ef8ee213b7c02d1ba4d465fa3d9e3afbca
|
4
|
+
data.tar.gz: 7443f067c1f523c1b455b68f1257eda3abc1df06
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 44c69252f56c16deb155cdfdc75f4da36bbf212f3cf114959f7b9d69eb9449c38bb9d3769aeb0ad10351ef6ae18362d3e1696a80bdfbe8ca9fc85e53953a01a6
|
7
|
+
data.tar.gz: e66cda22c5cb242fbe548667dde04529fdd37b48c5049be7311420d03a2209fb3e2e5a5f7da1d6617b603bfa7b96ab536708d5ac1250e5d627dfb7b8272bfef2
|
data/README.md
CHANGED
@@ -62,14 +62,14 @@ Will return an [Hashie::Mash](https://github.com/intridea/hashie) object:
|
|
62
62
|
}
|
63
63
|
```
|
64
64
|
|
65
|
-
There are
|
65
|
+
There are 4 ways to run validations:
|
66
66
|
|
67
67
|
Method | Behaviour
|
68
68
|
------------- | -------------
|
69
69
|
`#run` | Validates and returns an Hash with coerced params plus a `:errors` key with a _Rails like_ Hash of errors if any.
|
70
70
|
`#run!` | Validates and raises `Compel::InvalidObjectError` exception with the coerced params and errors.
|
71
71
|
`#run?` | Validates and returns true or false.
|
72
|
-
`schema#validate` |
|
72
|
+
`schema#validate` | Check below
|
73
73
|
|
74
74
|
==========================
|
75
75
|
|
@@ -43,9 +43,16 @@ module Compel
|
|
43
43
|
if !result.valid?
|
44
44
|
# TODO: ArrayValidator should do this for me:
|
45
45
|
# remove invalid coerced index,
|
46
|
-
# and set the original value
|
46
|
+
# and set the original value.
|
47
|
+
# If it's an Hash, keep errors key
|
47
48
|
result.errors.keys.each do |index|
|
48
|
-
@output[index.to_i]
|
49
|
+
if @output[index.to_i].is_a?(Hash)
|
50
|
+
# Keep errors key on hash if exists
|
51
|
+
@output[index.to_i].merge!(values[index.to_i])
|
52
|
+
else
|
53
|
+
# Array, Integer, String, Float, Dates.. etc
|
54
|
+
@output[index.to_i] = values[index.to_i]
|
55
|
+
end
|
49
56
|
end
|
50
57
|
|
51
58
|
@errors = result.errors
|
data/lib/compel/version.rb
CHANGED
data/spec/compel/builder_spec.rb
CHANGED
@@ -393,6 +393,31 @@ describe Compel::Builder do
|
|
393
393
|
include("'a' is not a valid Integer")
|
394
394
|
end
|
395
395
|
|
396
|
+
it 'should coerce hash with array of hashes with errors' do
|
397
|
+
schema = Compel.hash.keys(
|
398
|
+
actions: Compel.array.items(
|
399
|
+
Compel.hash.keys(
|
400
|
+
a: Compel.string.required,
|
401
|
+
b: Compel.string.format(/^abc$/)
|
402
|
+
)
|
403
|
+
)
|
404
|
+
)
|
405
|
+
|
406
|
+
object = {
|
407
|
+
other_key: 1,
|
408
|
+
actions: [
|
409
|
+
{ a: 'A', b: 'abc' },
|
410
|
+
{ a: 'B' },
|
411
|
+
{ a: 'C', b: 'abcd' }
|
412
|
+
]
|
413
|
+
}
|
414
|
+
|
415
|
+
result = schema.validate(object)
|
416
|
+
|
417
|
+
expect(result.value[:actions][2][:errors][:b]).to \
|
418
|
+
include('must match format ^abc$')
|
419
|
+
end
|
420
|
+
|
396
421
|
end
|
397
422
|
|
398
423
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: compel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joaquim Adráz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hashie
|