parameters_schema 0.42 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,90 +1,90 @@
1
- require 'minitest/autorun'
2
- require 'parameters_schema'
3
- require_relative 'helpers'
4
-
5
- describe 'Object' do
6
- it 'creates a sub-schema for objects' do
7
- ParametersSchema::Schema.new do
8
- param :potatoe do
9
- param :name
10
- end
11
- end
12
- .must_allow({ name: 'Eramosa' })
13
- end
14
-
15
- it 'creates a as many sub-schemas as needed' do
16
- schema = ParametersSchema::Schema.new do
17
- param :potatoe do
18
- param :quantity, type: Fixnum
19
- param :description do
20
- param :name
21
- param :local, type: :boolean
22
- end
23
- end
24
- end
25
-
26
- schema
27
- .validate!(potatoe: { quantity: '10', description: { name: 'Eramosa', local: 't' } })
28
- .must_equal_hash(potatoe: { quantity: 10, description: { name: 'Eramosa', local: true } })
29
- end
30
-
31
- it 'allows an empty sub-schema' do
32
- schema = ParametersSchema::Schema.new do
33
- param :potatoe do end
34
- end
35
- .must_deny(nil, ParametersSchema::ErrorCode::NIL)
36
- .must_deny({}, ParametersSchema::ErrorCode::EMPTY)
37
-
38
- Proc
39
- .new{ schema.validate!(potatoe: { name: 'Eramosa' }) }
40
- .must_raise(ParametersSchema::InvalidParameters)
41
- .errors.must_equal_hash(potatoe: { name: ParametersSchema::ErrorCode::UNKNOWN })
42
- end
43
-
44
- it 'can be embeded in array' do
45
- [{ array: true}, type: { Array => Hash }].each do |array_format|
46
- schema = ParametersSchema::Schema.new do
47
- param :potatoes, array_format do
48
- param :name
49
- end
50
- end
51
-
52
- schema
53
- .validate!(potatoes: [{ name: 'Ac Belmont' }, { name: 'Eramosa' }])
54
- .must_equal_hash(potatoes: [{ name: 'Ac Belmont' }, { name: 'Eramosa' }])
55
- end
56
- end
57
-
58
- it 'can be embeded in array - complex' do
59
- schema = ParametersSchema::Schema.new do
60
- param :potatoes, array: true do
61
- param :quantity, type: Fixnum
62
- param :description do
63
- param :name
64
- param :local, type: :boolean
65
- end
66
- end
67
- end
68
-
69
- potatoes = [
70
- {
71
- quantity: 10,
72
- description: {
73
- name: 'Eramosa',
74
- local: true
75
- }
76
- },
77
- {
78
- quantity: 1000,
79
- description: {
80
- name: 'Eramosa II',
81
- local: false
82
- }
83
- }
84
- ]
85
-
86
- schema
87
- .validate!(potatoes: potatoes)
88
- .must_equal_hash(potatoes: potatoes)
89
- end
90
- end
1
+ require 'minitest/autorun'
2
+ require 'parameters_schema'
3
+ require_relative 'helpers'
4
+
5
+ describe 'Object' do
6
+ it 'creates a sub-schema for objects' do
7
+ ParametersSchema::Schema.new do
8
+ param :potatoe do
9
+ param :name
10
+ end
11
+ end
12
+ .must_allow({ name: 'Eramosa' })
13
+ end
14
+
15
+ it 'creates a as many sub-schemas as needed' do
16
+ schema = ParametersSchema::Schema.new do
17
+ param :potatoe do
18
+ param :quantity, type: Fixnum
19
+ param :description do
20
+ param :name
21
+ param :local, type: :boolean
22
+ end
23
+ end
24
+ end
25
+
26
+ schema
27
+ .validate!(potatoe: { quantity: '10', description: { name: 'Eramosa', local: 't' } })
28
+ .must_equal_hash(potatoe: { quantity: 10, description: { name: 'Eramosa', local: true } })
29
+ end
30
+
31
+ it 'allows an empty sub-schema' do
32
+ schema = ParametersSchema::Schema.new do
33
+ param :potatoe do end
34
+ end
35
+ .must_deny(nil, ParametersSchema::ErrorCode::NIL)
36
+ .must_deny({}, ParametersSchema::ErrorCode::EMPTY)
37
+
38
+ Proc
39
+ .new{ schema.validate!(potatoe: { name: 'Eramosa' }) }
40
+ .must_raise(ParametersSchema::InvalidParameters)
41
+ .errors.must_equal_hash(potatoe: { name: ParametersSchema::ErrorCode::UNKNOWN })
42
+ end
43
+
44
+ it 'can be embeded in array' do
45
+ [{ array: true}, type: { Array => Hash }].each do |array_format|
46
+ schema = ParametersSchema::Schema.new do
47
+ param :potatoes, array_format do
48
+ param :name
49
+ end
50
+ end
51
+
52
+ schema
53
+ .validate!(potatoes: [{ name: 'Ac Belmont' }, { name: 'Eramosa' }])
54
+ .must_equal_hash(potatoes: [{ name: 'Ac Belmont' }, { name: 'Eramosa' }])
55
+ end
56
+ end
57
+
58
+ it 'can be embeded in array - complex' do
59
+ schema = ParametersSchema::Schema.new do
60
+ param :potatoes, array: true do
61
+ param :quantity, type: Fixnum
62
+ param :description do
63
+ param :name
64
+ param :local, type: :boolean
65
+ end
66
+ end
67
+ end
68
+
69
+ potatoes = [
70
+ {
71
+ quantity: 10,
72
+ description: {
73
+ name: 'Eramosa',
74
+ local: true
75
+ }
76
+ },
77
+ {
78
+ quantity: 1000,
79
+ description: {
80
+ name: 'Eramosa II',
81
+ local: false
82
+ }
83
+ }
84
+ ]
85
+
86
+ schema
87
+ .validate!(potatoes: potatoes)
88
+ .must_equal_hash(potatoes: potatoes)
89
+ end
90
+ end
@@ -1,74 +1,74 @@
1
- require 'minitest/autorun'
2
- require 'parameters_schema'
3
- require_relative 'helpers'
4
-
5
- describe 'Required' do
6
- before do
7
- ParametersSchema::Options.reset_defaults
8
- end
9
-
10
- it 'is required by default' do
11
- Proc.new do
12
- ParametersSchema::Schema.new do
13
- param :potatoe
14
- end.validate!({})
15
- end
16
- .must_raise(ParametersSchema::InvalidParameters)
17
- .errors.must_equal_hash(potatoe: ParametersSchema::ErrorCode::MISSING)
18
- end
19
-
20
- it 'can be explicitly stated as required' do
21
- Proc.new do
22
- ParametersSchema::Schema.new do
23
- param :potatoe, required: true
24
- end.validate!({})
25
- end
26
- .must_raise(ParametersSchema::InvalidParameters)
27
- .errors.must_equal_hash(potatoe: ParametersSchema::ErrorCode::MISSING)
28
- end
29
-
30
- it 'can be set to be not required' do
31
- ParametersSchema::Schema.new do
32
- param :potatoe, required: false
33
- end
34
- .validate!({})
35
- .must_equal_hash({})
36
- end
37
-
38
- it 'applies to object params - validation successful' do
39
- ParametersSchema::Schema.new do
40
- param :potatoe do
41
- param :name
42
- param :type, required: false
43
- end
44
- end
45
- .validate!(potatoe: { name: 'Eramosa' })
46
- .must_equal_hash(potatoe: { name: 'Eramosa' })
47
- end
48
-
49
- it 'applies to object params - validation failed on name' do
50
- Proc.new do
51
- ParametersSchema::Schema.new do
52
- param :potatoe do
53
- param :name
54
- param :type, required: false
55
- end
56
- end.validate!(potatoe: {})
57
- end
58
- .must_raise(ParametersSchema::InvalidParameters)
59
- .errors.must_equal_hash(potatoe: { name: ParametersSchema::ErrorCode::MISSING })
60
- end
61
-
62
- it 'applies to object params - validation failed on potatoe' do
63
- Proc.new do
64
- ParametersSchema::Schema.new do
65
- param :potatoe do
66
- param :name
67
- param :type, required: false
68
- end
69
- end.validate!({})
70
- end
71
- .must_raise(ParametersSchema::InvalidParameters)
72
- .errors.must_equal_hash(potatoe: ParametersSchema::ErrorCode::MISSING)
73
- end
74
- end
1
+ require 'minitest/autorun'
2
+ require 'parameters_schema'
3
+ require_relative 'helpers'
4
+
5
+ describe 'Required' do
6
+ before do
7
+ ParametersSchema::Options.reset_defaults
8
+ end
9
+
10
+ it 'is required by default' do
11
+ Proc.new do
12
+ ParametersSchema::Schema.new do
13
+ param :potatoe
14
+ end.validate!({})
15
+ end
16
+ .must_raise(ParametersSchema::InvalidParameters)
17
+ .errors.must_equal_hash(potatoe: ParametersSchema::ErrorCode::MISSING)
18
+ end
19
+
20
+ it 'can be explicitly stated as required' do
21
+ Proc.new do
22
+ ParametersSchema::Schema.new do
23
+ param :potatoe, required: true
24
+ end.validate!({})
25
+ end
26
+ .must_raise(ParametersSchema::InvalidParameters)
27
+ .errors.must_equal_hash(potatoe: ParametersSchema::ErrorCode::MISSING)
28
+ end
29
+
30
+ it 'can be set to be not required' do
31
+ ParametersSchema::Schema.new do
32
+ param :potatoe, required: false
33
+ end
34
+ .validate!({})
35
+ .must_equal_hash({})
36
+ end
37
+
38
+ it 'applies to object params - validation successful' do
39
+ ParametersSchema::Schema.new do
40
+ param :potatoe do
41
+ param :name
42
+ param :type, required: false
43
+ end
44
+ end
45
+ .validate!(potatoe: { name: 'Eramosa' })
46
+ .must_equal_hash(potatoe: { name: 'Eramosa' })
47
+ end
48
+
49
+ it 'applies to object params - validation failed on name' do
50
+ Proc.new do
51
+ ParametersSchema::Schema.new do
52
+ param :potatoe do
53
+ param :name
54
+ param :type, required: false
55
+ end
56
+ end.validate!(potatoe: {})
57
+ end
58
+ .must_raise(ParametersSchema::InvalidParameters)
59
+ .errors.must_equal_hash(potatoe: { name: ParametersSchema::ErrorCode::MISSING })
60
+ end
61
+
62
+ it 'applies to object params - validation failed on potatoe' do
63
+ Proc.new do
64
+ ParametersSchema::Schema.new do
65
+ param :potatoe do
66
+ param :name
67
+ param :type, required: false
68
+ end
69
+ end.validate!({})
70
+ end
71
+ .must_raise(ParametersSchema::InvalidParameters)
72
+ .errors.must_equal_hash(potatoe: ParametersSchema::ErrorCode::MISSING)
73
+ end
74
+ end
@@ -1,58 +1,58 @@
1
- require 'minitest/autorun'
2
- require 'parameters_schema'
3
- require_relative 'helpers'
4
-
5
- describe 'Empty schema' do
6
- before do
7
- ParametersSchema::Options.reset_defaults
8
- @schema = ParametersSchema::Schema.new do end
9
- end
10
-
11
- it 'accepts nil params' do
12
- @schema
13
- .validate!(nil)
14
- .must_equal_hash({})
15
- end
16
-
17
- it 'accepts empty params' do
18
- @schema
19
- .validate!({})
20
- .must_equal_hash({})
21
- end
22
-
23
- it 'wont accept non-empty params' do
24
- Proc
25
- .new{ @schema.validate!(potatoe: 'Eramosa') }
26
- .must_raise(ParametersSchema::InvalidParameters)
27
- .errors.must_equal_hash(potatoe: ParametersSchema::ErrorCode::UNKNOWN)
28
- end
29
- end
30
-
31
- describe 'Simple schema' do
32
- before do
33
- @schema = ParametersSchema::Schema.new do
34
- param :potatoe
35
- end
36
- end
37
-
38
- it 'accepts string or symbol keys' do
39
- ['potatoe', :potatoe].each do |key|
40
- @schema
41
- .validate!(key => 'Eramosa')
42
- .must_equal_hash(key => 'Eramosa')
43
- end
44
- end
45
-
46
- it 'validates a valid input' do
47
- @schema
48
- .validate!(potatoe: 'Eramosa')
49
- .must_equal_hash(potatoe: 'Eramosa')
50
- end
51
-
52
- it 'validates an invalid input because of a missing key' do
53
- exception = Proc
54
- .new{ @schema.validate!({}) }
55
- .must_raise(ParametersSchema::InvalidParameters)
56
- .errors.must_equal_hash(potatoe: :missing)
57
- end
58
- end
1
+ require 'minitest/autorun'
2
+ require 'parameters_schema'
3
+ require_relative 'helpers'
4
+
5
+ describe 'Empty schema' do
6
+ before do
7
+ ParametersSchema::Options.reset_defaults
8
+ @schema = ParametersSchema::Schema.new do end
9
+ end
10
+
11
+ it 'accepts nil params' do
12
+ @schema
13
+ .validate!(nil)
14
+ .must_equal_hash({})
15
+ end
16
+
17
+ it 'accepts empty params' do
18
+ @schema
19
+ .validate!({})
20
+ .must_equal_hash({})
21
+ end
22
+
23
+ it 'wont accept non-empty params' do
24
+ Proc
25
+ .new{ @schema.validate!(potatoe: 'Eramosa') }
26
+ .must_raise(ParametersSchema::InvalidParameters)
27
+ .errors.must_equal_hash(potatoe: ParametersSchema::ErrorCode::UNKNOWN)
28
+ end
29
+ end
30
+
31
+ describe 'Simple schema' do
32
+ before do
33
+ @schema = ParametersSchema::Schema.new do
34
+ param :potatoe
35
+ end
36
+ end
37
+
38
+ it 'accepts string or symbol keys' do
39
+ ['potatoe', :potatoe].each do |key|
40
+ @schema
41
+ .validate!(key => 'Eramosa')
42
+ .must_equal_hash(key => 'Eramosa')
43
+ end
44
+ end
45
+
46
+ it 'validates a valid input' do
47
+ @schema
48
+ .validate!(potatoe: 'Eramosa')
49
+ .must_equal_hash(potatoe: 'Eramosa')
50
+ end
51
+
52
+ it 'validates an invalid input because of a missing key' do
53
+ exception = Proc
54
+ .new{ @schema.validate!({}) }
55
+ .must_raise(ParametersSchema::InvalidParameters)
56
+ .errors.must_equal_hash(potatoe: :missing)
57
+ end
58
+ end