schemacop 2.3.2 → 2.4.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -0
- data/README.md +190 -2
- data/RUBY_VERSION +1 -1
- data/Rakefile +6 -5
- data/VERSION +1 -1
- data/doc/Schemacop.html +30 -3
- data/doc/Schemacop/ArrayValidator.html +2 -2
- data/doc/Schemacop/BooleanValidator.html +1 -1
- data/doc/Schemacop/Caster.html +379 -0
- data/doc/Schemacop/Collector.html +178 -102
- data/doc/Schemacop/Exceptions.html +1 -1
- data/doc/Schemacop/Exceptions/InvalidSchemaError.html +1 -1
- data/doc/Schemacop/Exceptions/ValidationError.html +1 -1
- data/doc/Schemacop/FieldNode.html +17 -5
- data/doc/Schemacop/FloatValidator.html +1 -1
- data/doc/Schemacop/HashValidator.html +1 -1
- data/doc/Schemacop/IntegerValidator.html +1 -1
- data/doc/Schemacop/NilValidator.html +1 -1
- data/doc/Schemacop/Node.html +95 -83
- data/doc/Schemacop/NodeResolver.html +26 -10
- data/doc/Schemacop/NodeSupportingField.html +1 -1
- data/doc/Schemacop/NodeSupportingType.html +2 -4
- data/doc/Schemacop/NodeWithBlock.html +1 -1
- data/doc/Schemacop/NumberValidator.html +1 -1
- data/doc/Schemacop/ObjectValidator.html +1 -1
- data/doc/Schemacop/RootNode.html +1 -1
- data/doc/Schemacop/Schema.html +3 -3
- data/doc/Schemacop/StringValidator.html +1 -1
- data/doc/Schemacop/SymbolValidator.html +1 -1
- data/doc/ScopedEnv.html +1 -1
- data/doc/_index.html +8 -1
- data/doc/class_list.html +1 -1
- data/doc/file.README.html +184 -3
- data/doc/index.html +184 -3
- data/doc/method_list.html +93 -61
- data/doc/top-level-namespace.html +1 -1
- data/lib/schemacop.rb +14 -0
- data/lib/schemacop/caster.rb +38 -0
- data/lib/schemacop/collector.rb +34 -6
- data/lib/schemacop/field_node.rb +25 -3
- data/lib/schemacop/node.rb +10 -2
- data/lib/schemacop/node_resolver.rb +10 -2
- data/lib/schemacop/node_supporting_type.rb +21 -1
- data/lib/schemacop/schema.rb +2 -2
- data/lib/schemacop/validator/array_validator.rb +1 -1
- data/lib/schemacop/validator/float_validator.rb +1 -1
- data/lib/schemacop/validator/integer_validator.rb +1 -1
- data/schemacop.gemspec +14 -8
- data/test/casting_test.rb +90 -0
- data/test/custom_check_test.rb +14 -14
- data/test/custom_if_test.rb +12 -12
- data/test/defaults_test.rb +71 -0
- data/test/nil_dis_allow_test.rb +6 -6
- data/test/node_resolver_test.rb +26 -0
- data/test/short_forms_test.rb +73 -66
- data/test/test_helper.rb +7 -0
- data/test/types_test.rb +5 -5
- data/test/validator_array_test.rb +16 -16
- data/test/validator_boolean_test.rb +2 -2
- data/test/validator_float_test.rb +15 -15
- data/test/validator_hash_test.rb +5 -5
- data/test/validator_integer_test.rb +9 -9
- data/test/validator_nil_test.rb +1 -1
- data/test/validator_number_test.rb +19 -19
- data/test/validator_object_test.rb +18 -18
- data/test/validator_string_test.rb +12 -12
- data/test/validator_symbol_test.rb +2 -2
- metadata +42 -6
data/test/custom_check_test.rb
CHANGED
@@ -4,9 +4,9 @@ module Schemacop
|
|
4
4
|
class CustomCheckTest < Minitest::Test
|
5
5
|
def test_integer_check_short_form
|
6
6
|
s = Schema.new :integer, check: proc { |i| i.even? }
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
assert_nothing_raised { s.validate!(2) }
|
8
|
+
assert_nothing_raised { s.validate!(-8) }
|
9
|
+
assert_nothing_raised { s.validate!(0) }
|
10
10
|
assert_verr { s.validate!(1) }
|
11
11
|
assert_verr { s.validate!(-7) }
|
12
12
|
assert_verr { s.validate!(2.1) }
|
@@ -14,7 +14,7 @@ module Schemacop
|
|
14
14
|
|
15
15
|
def test_custom_error_message
|
16
16
|
s = Schema.new :integer, check: proc { |i| i.even? ? true : 'Custom error' }
|
17
|
-
|
17
|
+
assert_nothing_raised { s.validate!(2) }
|
18
18
|
exception = assert_verr { s.validate!(3) }
|
19
19
|
assert_match(/Custom :check failed: Custom error\./, exception.message)
|
20
20
|
end
|
@@ -24,9 +24,9 @@ module Schemacop
|
|
24
24
|
type :integer, check: ->(i) { i.even? }
|
25
25
|
end
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
assert_nothing_raised { s.validate!(2) }
|
28
|
+
assert_nothing_raised { s.validate!(-8) }
|
29
|
+
assert_nothing_raised { s.validate!(0) }
|
30
30
|
assert_verr { s.validate!(1) }
|
31
31
|
assert_verr { s.validate!(-7) }
|
32
32
|
assert_verr { s.validate!(2.1) }
|
@@ -36,7 +36,7 @@ module Schemacop
|
|
36
36
|
s = Schema.new do
|
37
37
|
type :number, check: proc { |x| x == 42 }
|
38
38
|
end
|
39
|
-
|
39
|
+
assert_nothing_raised { s.validate!(42) }
|
40
40
|
assert_verr { s.validate!(42.1) }
|
41
41
|
assert_verr { s.validate!(0) }
|
42
42
|
end
|
@@ -47,7 +47,7 @@ module Schemacop
|
|
47
47
|
type :integer
|
48
48
|
end
|
49
49
|
end
|
50
|
-
|
50
|
+
assert_nothing_raised { s.validate!([1, 2, 3]) }
|
51
51
|
assert_verr { s.validate!([2, 3, 4]) }
|
52
52
|
end
|
53
53
|
|
@@ -58,7 +58,7 @@ module Schemacop
|
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
-
|
61
|
+
assert_nothing_raised { s.validate!([4, 3, 2]) }
|
62
62
|
assert_verr { s.validate!([3, 2]) }
|
63
63
|
assert_verr { s.validate!([4, 1]) }
|
64
64
|
end
|
@@ -68,7 +68,7 @@ module Schemacop
|
|
68
68
|
opt 1, :integer
|
69
69
|
opt 'two', :string
|
70
70
|
end
|
71
|
-
|
71
|
+
assert_nothing_raised { s.validate!(1 => 1, 'two' => 'two') }
|
72
72
|
assert_verr { s.validate!(1 => 2, 'two' => 'two') }
|
73
73
|
assert_verr { s.validate!(1 => 1, 'two' => 'one') }
|
74
74
|
end
|
@@ -82,9 +82,9 @@ module Schemacop
|
|
82
82
|
req :first_name, :string, min: 3
|
83
83
|
end
|
84
84
|
|
85
|
-
|
86
|
-
|
87
|
-
|
85
|
+
assert_nothing_raised { s.validate!(first_name: 'Bob') }
|
86
|
+
assert_nothing_raised { s.validate!(first_name: 'Sandy') }
|
87
|
+
assert_nothing_raised { s.validate!(first_name: 'Sansibar') }
|
88
88
|
|
89
89
|
assert_verr { s.validate!(first_name: 'Sandkasten') }
|
90
90
|
assert_verr { s.validate!(first_name: 'a') }
|
data/test/custom_if_test.rb
CHANGED
@@ -7,7 +7,7 @@ module Schemacop
|
|
7
7
|
type :integer, if: proc { |data| data.odd? }
|
8
8
|
end
|
9
9
|
|
10
|
-
|
10
|
+
assert_nothing_raised { s.validate! 5 }
|
11
11
|
assert_verr { s.validate! nil }
|
12
12
|
assert_verr { s.validate! 4 }
|
13
13
|
end
|
@@ -18,8 +18,8 @@ module Schemacop
|
|
18
18
|
type :string
|
19
19
|
end
|
20
20
|
|
21
|
-
|
22
|
-
|
21
|
+
assert_nothing_raised { s.validate!(5) }
|
22
|
+
assert_nothing_raised { s.validate!('abc') }
|
23
23
|
assert_verr { s.validate!(4) }
|
24
24
|
end
|
25
25
|
|
@@ -29,8 +29,8 @@ module Schemacop
|
|
29
29
|
req :foo, :string, min: 5
|
30
30
|
end
|
31
31
|
|
32
|
-
|
33
|
-
|
32
|
+
assert_nothing_raised { s.validate!(foo: 'abc') }
|
33
|
+
assert_nothing_raised { s.validate!(foo: 'bcdef') }
|
34
34
|
assert_verr { s.validate!(foo: 'a') }
|
35
35
|
assert_verr { s.validate!(foo: 'bcde') }
|
36
36
|
end
|
@@ -41,8 +41,8 @@ module Schemacop
|
|
41
41
|
req :foo, :integer
|
42
42
|
end
|
43
43
|
|
44
|
-
|
45
|
-
|
44
|
+
assert_nothing_raised { s.validate!(foo: 3) }
|
45
|
+
assert_nothing_raised { s.validate!(foo: 'abc') }
|
46
46
|
assert_verr { s.validate!(foo: 'bcd') }
|
47
47
|
assert_verr { s.validate!(foo: true) }
|
48
48
|
end
|
@@ -61,8 +61,8 @@ module Schemacop
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
-
|
65
|
-
|
64
|
+
assert_nothing_raised { s.validate!(user: [{ admin: true, admin_only: 'foo' }, { admin: false, non_admin_only: 'foo' }]) }
|
65
|
+
assert_nothing_raised { s.validate!(user: [{ admin: true, admin_only: 'foo' }, { non_admin_only: 'foo' }]) }
|
66
66
|
assert_verr { s.validate!(user: [{ admin: false, admin_only: 'foo' }]) }
|
67
67
|
assert_verr { s.validate!(user: [{ admin: true, non_admin_only: 'foo' }]) }
|
68
68
|
end
|
@@ -75,8 +75,8 @@ module Schemacop
|
|
75
75
|
req :bar, :integer
|
76
76
|
end
|
77
77
|
|
78
|
-
|
79
|
-
|
78
|
+
assert_nothing_raised { s.validate!(foo: 5, bar: 5) }
|
79
|
+
assert_nothing_raised { s.validate!(foo: 5, bar: 4) }
|
80
80
|
assert_verr { s.validate!(foo: 4, bar: 5) }
|
81
81
|
assert_verr { s.validate!(foo: 4, bar: 4) }
|
82
82
|
end
|
@@ -87,7 +87,7 @@ module Schemacop
|
|
87
87
|
opt :foo, :integer
|
88
88
|
end
|
89
89
|
|
90
|
-
|
90
|
+
assert_nothing_raised { s.validate!(foo: 4) }
|
91
91
|
assert_verr { s.validate!({}) }
|
92
92
|
assert_verr { s.validate!('something') }
|
93
93
|
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Schemacop
|
4
|
+
class DefaultsTest < Minitest::Test
|
5
|
+
def test_basic
|
6
|
+
s = Schema.new :integer, default: 42
|
7
|
+
|
8
|
+
input = nil
|
9
|
+
output = s.validate!(input)
|
10
|
+
|
11
|
+
assert_equal(42, output)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_hash
|
15
|
+
s = Schema.new do
|
16
|
+
opt :foo, :string, default: 'bar'
|
17
|
+
end
|
18
|
+
|
19
|
+
input = { foo: nil }
|
20
|
+
output = s.validate!(input)
|
21
|
+
assert_equal({ foo: 'bar'}, output)
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_missing_hash_key
|
25
|
+
s = Schema.new do
|
26
|
+
opt :foo, :string, default: 'bar'
|
27
|
+
end
|
28
|
+
|
29
|
+
input = {}
|
30
|
+
output = s.validate!(input)
|
31
|
+
assert_equal({ foo: 'bar'}, output)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_entire_hash
|
35
|
+
s = Schema.new do
|
36
|
+
opt :foo, :hash, default: { name: { first: 'Foo', last: 'Bar' } } do
|
37
|
+
req :name do
|
38
|
+
req :first
|
39
|
+
req :last
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
input = {}
|
45
|
+
output = s.validate!(input)
|
46
|
+
assert_equal({ foo: { name: { first: 'Foo', last: 'Bar' } } }, output)
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_entire_array
|
50
|
+
s = Schema.new do
|
51
|
+
opt :foo, :array, default: [{ bar: 42}] do
|
52
|
+
req :bar
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
input = {}
|
57
|
+
output = s.validate!(input)
|
58
|
+
assert_equal({ foo: [{ bar: 42 }] }, output)
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_invalid_default
|
62
|
+
s = Schema.new :integer, default: '42'
|
63
|
+
|
64
|
+
input = nil
|
65
|
+
|
66
|
+
assert_verr do
|
67
|
+
s.validate!(input)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
data/test/nil_dis_allow_test.rb
CHANGED
@@ -14,8 +14,8 @@ module Schemacop
|
|
14
14
|
type :boolean
|
15
15
|
end
|
16
16
|
end
|
17
|
-
|
18
|
-
|
17
|
+
assert_nothing_raised { s.validate!(o: nil, r: false) }
|
18
|
+
assert_nothing_raised { s.validate!(o: false, r: false) }
|
19
19
|
assert_verr { s.validate!(o: true, r: nil) }
|
20
20
|
assert_verr { s.validate!(o: nil, r: nil) }
|
21
21
|
assert_verr { s.validate!(r: true) }
|
@@ -30,10 +30,10 @@ module Schemacop
|
|
30
30
|
type :boolean
|
31
31
|
end
|
32
32
|
end
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
assert_nothing_raised { s.validate!(o: nil, r: false) }
|
34
|
+
assert_nothing_raised { s.validate!(o: false, r: false) }
|
35
|
+
assert_nothing_raised { s.validate!(r: true) }
|
36
|
+
assert_nothing_raised { s.validate!({}) }
|
37
37
|
assert_verr { s.validate!(o: true, r: nil) }
|
38
38
|
assert_verr { s.validate!(o: nil, r: nil) }
|
39
39
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Schemacop
|
4
|
+
class NodeResolverTest < Minitest::Test
|
5
|
+
class ClassA; end
|
6
|
+
class ClassB; end
|
7
|
+
class ClassC; end
|
8
|
+
class ClassD; end
|
9
|
+
|
10
|
+
def test_insert_before
|
11
|
+
prev_node_classes = NodeResolver.node_classes
|
12
|
+
|
13
|
+
NodeResolver.node_classes = []
|
14
|
+
|
15
|
+
NodeResolver.register(ClassA)
|
16
|
+
NodeResolver.register(ClassB)
|
17
|
+
NodeResolver.register(ClassC)
|
18
|
+
NodeResolver.register(ClassD, before: ClassB)
|
19
|
+
|
20
|
+
assert_equal [ClassA, ClassD, ClassB, ClassC],
|
21
|
+
NodeResolver.node_classes
|
22
|
+
ensure
|
23
|
+
NodeResolver.node_classes = prev_node_classes
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/test/short_forms_test.rb
CHANGED
@@ -15,8 +15,8 @@ module Schemacop
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
|
19
|
-
|
18
|
+
assert_nothing_raised { s.validate!(r: 3) }
|
19
|
+
assert_nothing_raised { s.validate!(r: 3, o: 1) }
|
20
20
|
assert_verr { s.validate!(o: 1) }
|
21
21
|
assert_verr { s.validate!(1) }
|
22
22
|
assert_verr { s.validate!(r: 3, n: 5) }
|
@@ -30,8 +30,8 @@ module Schemacop
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
-
|
34
|
-
|
33
|
+
assert_nothing_raised { s.validate!(r: 3) }
|
34
|
+
assert_nothing_raised { s.validate!(r: 'asd', o: self) }
|
35
35
|
assert_verr { s.validate!(o: -5.3) }
|
36
36
|
assert_verr { s.validate!(Class) }
|
37
37
|
assert_verr { s.validate!(r: s, n: true) }
|
@@ -45,8 +45,8 @@ module Schemacop
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
-
|
49
|
-
|
48
|
+
assert_nothing_raised { s.validate!(i: 5) }
|
49
|
+
assert_nothing_raised { s.validate!(i: 5, f: 2.3) }
|
50
50
|
assert_verr { s.validate!(i: 4, f: 2.3) }
|
51
51
|
assert_verr { s.validate!(i: 5, f: 2.2) }
|
52
52
|
assert_verr { s.validate!(i: 5, f: 3.4) }
|
@@ -57,7 +57,7 @@ module Schemacop
|
|
57
57
|
|
58
58
|
def test_inline_type_in_constructor
|
59
59
|
s = Schema.new :integer, min: 2, max: 4
|
60
|
-
|
60
|
+
assert_nothing_raised { s.validate!(3) }
|
61
61
|
assert_verr { s.validate!(5) }
|
62
62
|
assert_verr { s.validate!(1) }
|
63
63
|
end
|
@@ -69,9 +69,9 @@ module Schemacop
|
|
69
69
|
opt! :optint, :integer, min: 2, max: 3
|
70
70
|
end
|
71
71
|
|
72
|
-
|
73
|
-
|
74
|
-
|
72
|
+
assert_nothing_raised { s.validate!(nilbool: nil, nilint: nil) }
|
73
|
+
assert_nothing_raised { s.validate!(nilbool: false, nilint: 2) }
|
74
|
+
assert_nothing_raised { s.validate!(nilbool: false, nilint: 3, optint: 2) }
|
75
75
|
assert_verr { s.validate!(nilbool: false, nilint: 2, optint: nil) }
|
76
76
|
assert_verr { s.validate!(nilbool: false, nilint: 2, optint: 4) }
|
77
77
|
assert_verr { s.validate!(nilbool: false, nilint: -5, optint: 2) }
|
@@ -81,7 +81,7 @@ module Schemacop
|
|
81
81
|
s = Schema.new do
|
82
82
|
type(:array, :string)
|
83
83
|
end
|
84
|
-
|
84
|
+
assert_nothing_raised { s.validate!(%w(a b)) }
|
85
85
|
end
|
86
86
|
|
87
87
|
# TODO: Get the exception message into the assertion
|
@@ -97,10 +97,10 @@ module Schemacop
|
|
97
97
|
s = Schema.new do
|
98
98
|
type(:array, [:array, :integer])
|
99
99
|
end
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
100
|
+
assert_nothing_raised { s.validate! [[], 3] }
|
101
|
+
assert_nothing_raised { s.validate! [[:a, 9], 3] }
|
102
|
+
assert_nothing_raised { s.validate! [[]] }
|
103
|
+
assert_nothing_raised { s.validate! [3] }
|
104
104
|
assert_verr { s.validate! [[], 'string'] }
|
105
105
|
assert_verr { s.validate! [3, 'string'] }
|
106
106
|
assert_verr { s.validate! ['string'] }
|
@@ -119,7 +119,7 @@ module Schemacop
|
|
119
119
|
s = Schema.new do
|
120
120
|
type :array, :integer
|
121
121
|
end
|
122
|
-
|
122
|
+
assert_nothing_raised { s.validate! [5] }
|
123
123
|
assert_verr { s.validate! [nil] }
|
124
124
|
assert_verr { s.validate! ['a'] }
|
125
125
|
assert_verr { s.validate! [5, 'a'] }
|
@@ -130,7 +130,7 @@ module Schemacop
|
|
130
130
|
s = Schema.new do
|
131
131
|
type :array, :array, :integer
|
132
132
|
end
|
133
|
-
|
133
|
+
assert_nothing_raised { s.validate! [[5]] }
|
134
134
|
assert_verr { s.validate! [5] }
|
135
135
|
assert_verr { s.validate! [[nil]] }
|
136
136
|
assert_verr { s.validate! [['a']] }
|
@@ -160,22 +160,24 @@ module Schemacop
|
|
160
160
|
end
|
161
161
|
end
|
162
162
|
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
163
|
+
assert_nothing_raised do
|
164
|
+
s.validate!(
|
165
|
+
name: 6,
|
166
|
+
foo: { bar: nil },
|
167
|
+
attrs: { color: 5 },
|
168
|
+
id: 'hallo',
|
169
|
+
callback: :funky_function,
|
170
|
+
colors: [5, 'sdf'],
|
171
|
+
cars: [
|
172
|
+
{
|
173
|
+
make: 'Tesla',
|
174
|
+
ps: 5,
|
175
|
+
electric: nil,
|
176
|
+
years: [1993, 1990]
|
177
|
+
}
|
178
|
+
]
|
179
|
+
)
|
180
|
+
end
|
179
181
|
end
|
180
182
|
|
181
183
|
def test_super_deep_wild_should_pass
|
@@ -210,25 +212,27 @@ module Schemacop
|
|
210
212
|
type :integer, min: 3
|
211
213
|
end
|
212
214
|
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
[
|
224
|
-
|
225
|
-
|
215
|
+
assert_nothing_raised do
|
216
|
+
s.validate!(
|
217
|
+
id: 'meine ID',
|
218
|
+
friends: [
|
219
|
+
'Rodney',
|
220
|
+
true,
|
221
|
+
false,
|
222
|
+
{
|
223
|
+
rod: {
|
224
|
+
fritz:
|
225
|
+
[
|
226
|
+
[1],
|
227
|
+
[3]
|
228
|
+
]
|
229
|
+
}
|
226
230
|
}
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
231
|
+
]
|
232
|
+
)
|
233
|
+
end
|
234
|
+
assert_nothing_raised { s.validate!(id: 'my ID', friends: nil) }
|
235
|
+
assert_nothing_raised { s.validate!(3) }
|
232
236
|
end
|
233
237
|
|
234
238
|
def test_example_from_readme
|
@@ -244,12 +248,14 @@ module Schemacop
|
|
244
248
|
end
|
245
249
|
end
|
246
250
|
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
251
|
+
assert_nothing_raised do
|
252
|
+
schema.validate!(
|
253
|
+
naming: { first_name: 'John',
|
254
|
+
last_name: 'Doe' },
|
255
|
+
age: 34,
|
256
|
+
password: 'my*pass'
|
257
|
+
)
|
258
|
+
end
|
253
259
|
|
254
260
|
assert_verr do
|
255
261
|
schema.validate!(
|
@@ -259,6 +265,7 @@ module Schemacop
|
|
259
265
|
password: 'my*pass'
|
260
266
|
)
|
261
267
|
end
|
268
|
+
|
262
269
|
assert_verr do
|
263
270
|
schema.validate!(
|
264
271
|
naming: { first_name: 'John',
|
@@ -277,8 +284,8 @@ module Schemacop
|
|
277
284
|
req :description, :string, min: 35
|
278
285
|
end
|
279
286
|
|
280
|
-
|
281
|
-
|
287
|
+
assert_nothing_raised { schema2.validate!(description: 'Abstract: a short description') }
|
288
|
+
assert_nothing_raised { schema2.validate!(description: 'Since this is no abstract, we expect it to be longer.') }
|
282
289
|
assert_verr { schema2.validate!(description: 'Abstract: A short description.') }
|
283
290
|
assert_verr { schema2.validate!(description: 'Abstract: This is gonna be way way too long for an abstract.') }
|
284
291
|
assert_verr { schema2.validate!(description: 'This is too short.') }
|
@@ -288,16 +295,16 @@ module Schemacop
|
|
288
295
|
s = Schema.new do
|
289
296
|
type :array, :integer, min: 3
|
290
297
|
end
|
291
|
-
|
292
|
-
|
298
|
+
assert_nothing_raised { s.validate!([3]) }
|
299
|
+
assert_nothing_raised { s.validate!([3, 4, 5]) }
|
293
300
|
assert_verr { s.validate!([3, 2]) }
|
294
301
|
assert_verr { s.validate!([5, 'string']) }
|
295
302
|
end
|
296
303
|
|
297
304
|
def test_one_line_array_schema
|
298
305
|
s = Schema.new :array, :integer, min: 3
|
299
|
-
|
300
|
-
|
306
|
+
assert_nothing_raised { s.validate!([3]) }
|
307
|
+
assert_nothing_raised { s.validate!([3, 4, 5]) }
|
301
308
|
assert_verr { s.validate!([3, 2]) }
|
302
309
|
assert_verr { s.validate!([5, 'string']) }
|
303
310
|
end
|
@@ -306,14 +313,14 @@ module Schemacop
|
|
306
313
|
s = Schema.new do
|
307
314
|
req :bar
|
308
315
|
end
|
309
|
-
|
316
|
+
assert_nothing_raised { s.validate!(bar: 2) }
|
310
317
|
assert_verr { s.validate!(foo: 2) }
|
311
318
|
assert_verr { s.validate!([2]) }
|
312
319
|
end
|
313
320
|
|
314
321
|
def test_one_line_string_schema
|
315
322
|
s = Schema.new :string, min: 4
|
316
|
-
|
323
|
+
assert_nothing_raised { s.validate!('1234') }
|
317
324
|
assert_verr { s.validate!('123') }
|
318
325
|
assert_verr { s.validate!(string: '1234') }
|
319
326
|
end
|
@@ -324,7 +331,7 @@ module Schemacop
|
|
324
331
|
req :group, Group
|
325
332
|
end
|
326
333
|
|
327
|
-
|
334
|
+
assert_nothing_raised { s.validate!(user: User.new, group: Group.new) }
|
328
335
|
assert_verr { s.validate!(user: Group.new, group: User.new) }
|
329
336
|
end
|
330
337
|
end
|