schemacop 2.3.0 → 2.4.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 +5 -5
- data/CHANGELOG.md +41 -0
- data/LICENSE +1 -1
- data/README.md +204 -14
- data/RUBY_VERSION +1 -1
- data/Rakefile +6 -5
- data/VERSION +1 -1
- data/doc/Schemacop.html +32 -5
- data/doc/Schemacop/ArrayValidator.html +4 -4
- data/doc/Schemacop/BooleanValidator.html +4 -4
- data/doc/Schemacop/Caster.html +379 -0
- data/doc/Schemacop/Collector.html +180 -104
- data/doc/Schemacop/Exceptions.html +3 -3
- data/doc/Schemacop/Exceptions/InvalidSchemaError.html +3 -3
- data/doc/Schemacop/Exceptions/ValidationError.html +3 -3
- data/doc/Schemacop/FieldNode.html +19 -7
- data/doc/Schemacop/FloatValidator.html +4 -4
- data/doc/Schemacop/HashValidator.html +4 -4
- data/doc/Schemacop/IntegerValidator.html +4 -4
- data/doc/Schemacop/NilValidator.html +4 -4
- data/doc/Schemacop/Node.html +97 -85
- data/doc/Schemacop/NodeResolver.html +28 -12
- data/doc/Schemacop/NodeSupportingField.html +4 -4
- data/doc/Schemacop/NodeSupportingType.html +5 -7
- data/doc/Schemacop/NodeWithBlock.html +4 -4
- data/doc/Schemacop/NumberValidator.html +4 -4
- data/doc/Schemacop/ObjectValidator.html +3 -3
- data/doc/Schemacop/RootNode.html +4 -4
- data/doc/Schemacop/Schema.html +5 -5
- data/doc/Schemacop/StringValidator.html +3 -3
- data/doc/Schemacop/SymbolValidator.html +4 -4
- data/doc/ScopedEnv.html +3 -3
- data/doc/_index.html +11 -4
- data/doc/class_list.html +1 -1
- data/doc/css/style.css +10 -6
- data/doc/file.README.html +198 -16
- data/doc/frames.html +1 -1
- data/doc/index.html +198 -16
- data/doc/js/app.js +55 -0
- data/doc/method_list.html +81 -49
- data/doc/top-level-namespace.html +3 -3
- 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 +24 -3
- data/lib/schemacop/node.rb +16 -4
- data/lib/schemacop/node_resolver.rb +10 -2
- data/lib/schemacop/node_supporting_type.rb +19 -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/lib/schemacop/validator/object_validator.rb +1 -1
- data/schemacop.gemspec +15 -9
- data/test/casting_test.rb +90 -0
- data/test/custom_check_test.rb +20 -13
- 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 +84 -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 +52 -18
- data/test/validator_string_test.rb +12 -12
- data/test/validator_symbol_test.rb +2 -2
- metadata +43 -14
data/test/custom_check_test.rb
CHANGED
@@ -4,22 +4,29 @@ 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) }
|
13
13
|
end
|
14
14
|
|
15
|
+
def test_custom_error_message
|
16
|
+
s = Schema.new :integer, check: proc { |i| i.even? ? true : 'Custom error' }
|
17
|
+
assert_nothing_raised { s.validate!(2) }
|
18
|
+
exception = assert_verr { s.validate!(3) }
|
19
|
+
assert_match(/Custom :check failed: Custom error\./, exception.message)
|
20
|
+
end
|
21
|
+
|
15
22
|
def test_integer_check_with_lambda
|
16
23
|
s = Schema.new do
|
17
24
|
type :integer, check: ->(i) { i.even? }
|
18
25
|
end
|
19
26
|
|
20
|
-
|
21
|
-
|
22
|
-
|
27
|
+
assert_nothing_raised { s.validate!(2) }
|
28
|
+
assert_nothing_raised { s.validate!(-8) }
|
29
|
+
assert_nothing_raised { s.validate!(0) }
|
23
30
|
assert_verr { s.validate!(1) }
|
24
31
|
assert_verr { s.validate!(-7) }
|
25
32
|
assert_verr { s.validate!(2.1) }
|
@@ -29,7 +36,7 @@ module Schemacop
|
|
29
36
|
s = Schema.new do
|
30
37
|
type :number, check: proc { |x| x == 42 }
|
31
38
|
end
|
32
|
-
|
39
|
+
assert_nothing_raised { s.validate!(42) }
|
33
40
|
assert_verr { s.validate!(42.1) }
|
34
41
|
assert_verr { s.validate!(0) }
|
35
42
|
end
|
@@ -40,7 +47,7 @@ module Schemacop
|
|
40
47
|
type :integer
|
41
48
|
end
|
42
49
|
end
|
43
|
-
|
50
|
+
assert_nothing_raised { s.validate!([1, 2, 3]) }
|
44
51
|
assert_verr { s.validate!([2, 3, 4]) }
|
45
52
|
end
|
46
53
|
|
@@ -51,7 +58,7 @@ module Schemacop
|
|
51
58
|
end
|
52
59
|
end
|
53
60
|
|
54
|
-
|
61
|
+
assert_nothing_raised { s.validate!([4, 3, 2]) }
|
55
62
|
assert_verr { s.validate!([3, 2]) }
|
56
63
|
assert_verr { s.validate!([4, 1]) }
|
57
64
|
end
|
@@ -61,7 +68,7 @@ module Schemacop
|
|
61
68
|
opt 1, :integer
|
62
69
|
opt 'two', :string
|
63
70
|
end
|
64
|
-
|
71
|
+
assert_nothing_raised { s.validate!(1 => 1, 'two' => 'two') }
|
65
72
|
assert_verr { s.validate!(1 => 2, 'two' => 'two') }
|
66
73
|
assert_verr { s.validate!(1 => 1, 'two' => 'one') }
|
67
74
|
end
|
@@ -75,9 +82,9 @@ module Schemacop
|
|
75
82
|
req :first_name, :string, min: 3
|
76
83
|
end
|
77
84
|
|
78
|
-
|
79
|
-
|
80
|
-
|
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') }
|
81
88
|
|
82
89
|
assert_verr { s.validate!(first_name: 'Sandkasten') }
|
83
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
@@ -5,6 +5,17 @@ module Schemacop
|
|
5
5
|
class User; end
|
6
6
|
class Group; end
|
7
7
|
|
8
|
+
def test_untyped
|
9
|
+
s = Schema.new do
|
10
|
+
req :foo
|
11
|
+
end
|
12
|
+
|
13
|
+
assert_nothing_raised { s.validate!(foo: 3) }
|
14
|
+
assert_nothing_raised { s.validate!(foo: '42') }
|
15
|
+
assert_nothing_raised { s.validate!(foo: Object.new) }
|
16
|
+
assert_verr { s.validate!(foo: nil) }
|
17
|
+
end
|
18
|
+
|
8
19
|
def test_constructor_defaults_to_hash
|
9
20
|
s = Schema.new do
|
10
21
|
req! :r do
|
@@ -15,8 +26,8 @@ module Schemacop
|
|
15
26
|
end
|
16
27
|
end
|
17
28
|
|
18
|
-
|
19
|
-
|
29
|
+
assert_nothing_raised { s.validate!(r: 3) }
|
30
|
+
assert_nothing_raised { s.validate!(r: 3, o: 1) }
|
20
31
|
assert_verr { s.validate!(o: 1) }
|
21
32
|
assert_verr { s.validate!(1) }
|
22
33
|
assert_verr { s.validate!(r: 3, n: 5) }
|
@@ -30,8 +41,8 @@ module Schemacop
|
|
30
41
|
end
|
31
42
|
end
|
32
43
|
|
33
|
-
|
34
|
-
|
44
|
+
assert_nothing_raised { s.validate!(r: 3) }
|
45
|
+
assert_nothing_raised { s.validate!(r: 'asd', o: self) }
|
35
46
|
assert_verr { s.validate!(o: -5.3) }
|
36
47
|
assert_verr { s.validate!(Class) }
|
37
48
|
assert_verr { s.validate!(r: s, n: true) }
|
@@ -45,8 +56,8 @@ module Schemacop
|
|
45
56
|
end
|
46
57
|
end
|
47
58
|
|
48
|
-
|
49
|
-
|
59
|
+
assert_nothing_raised { s.validate!(i: 5) }
|
60
|
+
assert_nothing_raised { s.validate!(i: 5, f: 2.3) }
|
50
61
|
assert_verr { s.validate!(i: 4, f: 2.3) }
|
51
62
|
assert_verr { s.validate!(i: 5, f: 2.2) }
|
52
63
|
assert_verr { s.validate!(i: 5, f: 3.4) }
|
@@ -57,7 +68,7 @@ module Schemacop
|
|
57
68
|
|
58
69
|
def test_inline_type_in_constructor
|
59
70
|
s = Schema.new :integer, min: 2, max: 4
|
60
|
-
|
71
|
+
assert_nothing_raised { s.validate!(3) }
|
61
72
|
assert_verr { s.validate!(5) }
|
62
73
|
assert_verr { s.validate!(1) }
|
63
74
|
end
|
@@ -69,9 +80,9 @@ module Schemacop
|
|
69
80
|
opt! :optint, :integer, min: 2, max: 3
|
70
81
|
end
|
71
82
|
|
72
|
-
|
73
|
-
|
74
|
-
|
83
|
+
assert_nothing_raised { s.validate!(nilbool: nil, nilint: nil) }
|
84
|
+
assert_nothing_raised { s.validate!(nilbool: false, nilint: 2) }
|
85
|
+
assert_nothing_raised { s.validate!(nilbool: false, nilint: 3, optint: 2) }
|
75
86
|
assert_verr { s.validate!(nilbool: false, nilint: 2, optint: nil) }
|
76
87
|
assert_verr { s.validate!(nilbool: false, nilint: 2, optint: 4) }
|
77
88
|
assert_verr { s.validate!(nilbool: false, nilint: -5, optint: 2) }
|
@@ -81,7 +92,7 @@ module Schemacop
|
|
81
92
|
s = Schema.new do
|
82
93
|
type(:array, :string)
|
83
94
|
end
|
84
|
-
|
95
|
+
assert_nothing_raised { s.validate!(%w(a b)) }
|
85
96
|
end
|
86
97
|
|
87
98
|
# TODO: Get the exception message into the assertion
|
@@ -97,10 +108,10 @@ module Schemacop
|
|
97
108
|
s = Schema.new do
|
98
109
|
type(:array, [:array, :integer])
|
99
110
|
end
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
111
|
+
assert_nothing_raised { s.validate! [[], 3] }
|
112
|
+
assert_nothing_raised { s.validate! [[:a, 9], 3] }
|
113
|
+
assert_nothing_raised { s.validate! [[]] }
|
114
|
+
assert_nothing_raised { s.validate! [3] }
|
104
115
|
assert_verr { s.validate! [[], 'string'] }
|
105
116
|
assert_verr { s.validate! [3, 'string'] }
|
106
117
|
assert_verr { s.validate! ['string'] }
|
@@ -119,7 +130,7 @@ module Schemacop
|
|
119
130
|
s = Schema.new do
|
120
131
|
type :array, :integer
|
121
132
|
end
|
122
|
-
|
133
|
+
assert_nothing_raised { s.validate! [5] }
|
123
134
|
assert_verr { s.validate! [nil] }
|
124
135
|
assert_verr { s.validate! ['a'] }
|
125
136
|
assert_verr { s.validate! [5, 'a'] }
|
@@ -130,7 +141,7 @@ module Schemacop
|
|
130
141
|
s = Schema.new do
|
131
142
|
type :array, :array, :integer
|
132
143
|
end
|
133
|
-
|
144
|
+
assert_nothing_raised { s.validate! [[5]] }
|
134
145
|
assert_verr { s.validate! [5] }
|
135
146
|
assert_verr { s.validate! [[nil]] }
|
136
147
|
assert_verr { s.validate! [['a']] }
|
@@ -160,22 +171,24 @@ module Schemacop
|
|
160
171
|
end
|
161
172
|
end
|
162
173
|
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
174
|
+
assert_nothing_raised do
|
175
|
+
s.validate!(
|
176
|
+
name: 6,
|
177
|
+
foo: { bar: nil },
|
178
|
+
attrs: { color: 5 },
|
179
|
+
id: 'hallo',
|
180
|
+
callback: :funky_function,
|
181
|
+
colors: [5, 'sdf'],
|
182
|
+
cars: [
|
183
|
+
{
|
184
|
+
make: 'Tesla',
|
185
|
+
ps: 5,
|
186
|
+
electric: nil,
|
187
|
+
years: [1993, 1990]
|
188
|
+
}
|
189
|
+
]
|
190
|
+
)
|
191
|
+
end
|
179
192
|
end
|
180
193
|
|
181
194
|
def test_super_deep_wild_should_pass
|
@@ -210,25 +223,27 @@ module Schemacop
|
|
210
223
|
type :integer, min: 3
|
211
224
|
end
|
212
225
|
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
[
|
224
|
-
|
225
|
-
|
226
|
+
assert_nothing_raised do
|
227
|
+
s.validate!(
|
228
|
+
id: 'meine ID',
|
229
|
+
friends: [
|
230
|
+
'Rodney',
|
231
|
+
true,
|
232
|
+
false,
|
233
|
+
{
|
234
|
+
rod: {
|
235
|
+
fritz:
|
236
|
+
[
|
237
|
+
[1],
|
238
|
+
[3]
|
239
|
+
]
|
240
|
+
}
|
226
241
|
}
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
242
|
+
]
|
243
|
+
)
|
244
|
+
end
|
245
|
+
assert_nothing_raised { s.validate!(id: 'my ID', friends: nil) }
|
246
|
+
assert_nothing_raised { s.validate!(3) }
|
232
247
|
end
|
233
248
|
|
234
249
|
def test_example_from_readme
|
@@ -244,12 +259,14 @@ module Schemacop
|
|
244
259
|
end
|
245
260
|
end
|
246
261
|
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
262
|
+
assert_nothing_raised do
|
263
|
+
schema.validate!(
|
264
|
+
naming: { first_name: 'John',
|
265
|
+
last_name: 'Doe' },
|
266
|
+
age: 34,
|
267
|
+
password: 'my*pass'
|
268
|
+
)
|
269
|
+
end
|
253
270
|
|
254
271
|
assert_verr do
|
255
272
|
schema.validate!(
|
@@ -259,6 +276,7 @@ module Schemacop
|
|
259
276
|
password: 'my*pass'
|
260
277
|
)
|
261
278
|
end
|
279
|
+
|
262
280
|
assert_verr do
|
263
281
|
schema.validate!(
|
264
282
|
naming: { first_name: 'John',
|
@@ -277,8 +295,8 @@ module Schemacop
|
|
277
295
|
req :description, :string, min: 35
|
278
296
|
end
|
279
297
|
|
280
|
-
|
281
|
-
|
298
|
+
assert_nothing_raised { schema2.validate!(description: 'Abstract: a short description') }
|
299
|
+
assert_nothing_raised { schema2.validate!(description: 'Since this is no abstract, we expect it to be longer.') }
|
282
300
|
assert_verr { schema2.validate!(description: 'Abstract: A short description.') }
|
283
301
|
assert_verr { schema2.validate!(description: 'Abstract: This is gonna be way way too long for an abstract.') }
|
284
302
|
assert_verr { schema2.validate!(description: 'This is too short.') }
|
@@ -288,16 +306,16 @@ module Schemacop
|
|
288
306
|
s = Schema.new do
|
289
307
|
type :array, :integer, min: 3
|
290
308
|
end
|
291
|
-
|
292
|
-
|
309
|
+
assert_nothing_raised { s.validate!([3]) }
|
310
|
+
assert_nothing_raised { s.validate!([3, 4, 5]) }
|
293
311
|
assert_verr { s.validate!([3, 2]) }
|
294
312
|
assert_verr { s.validate!([5, 'string']) }
|
295
313
|
end
|
296
314
|
|
297
315
|
def test_one_line_array_schema
|
298
316
|
s = Schema.new :array, :integer, min: 3
|
299
|
-
|
300
|
-
|
317
|
+
assert_nothing_raised { s.validate!([3]) }
|
318
|
+
assert_nothing_raised { s.validate!([3, 4, 5]) }
|
301
319
|
assert_verr { s.validate!([3, 2]) }
|
302
320
|
assert_verr { s.validate!([5, 'string']) }
|
303
321
|
end
|
@@ -306,14 +324,14 @@ module Schemacop
|
|
306
324
|
s = Schema.new do
|
307
325
|
req :bar
|
308
326
|
end
|
309
|
-
|
327
|
+
assert_nothing_raised { s.validate!(bar: 2) }
|
310
328
|
assert_verr { s.validate!(foo: 2) }
|
311
329
|
assert_verr { s.validate!([2]) }
|
312
330
|
end
|
313
331
|
|
314
332
|
def test_one_line_string_schema
|
315
333
|
s = Schema.new :string, min: 4
|
316
|
-
|
334
|
+
assert_nothing_raised { s.validate!('1234') }
|
317
335
|
assert_verr { s.validate!('123') }
|
318
336
|
assert_verr { s.validate!(string: '1234') }
|
319
337
|
end
|
@@ -324,7 +342,7 @@ module Schemacop
|
|
324
342
|
req :group, Group
|
325
343
|
end
|
326
344
|
|
327
|
-
|
345
|
+
assert_nothing_raised { s.validate!(user: User.new, group: Group.new) }
|
328
346
|
assert_verr { s.validate!(user: Group.new, group: User.new) }
|
329
347
|
end
|
330
348
|
end
|