hash_validator 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6d8143f1edb6fe62100d9ae106dc46f46fcc423a
4
- data.tar.gz: 550feb38aa3d4d0b799d64a8ecbe90ea3b09d750
3
+ metadata.gz: 7a411f83813e65b6e88f8e71843fedec735ced2a
4
+ data.tar.gz: bdfe6c8004a6fd92d7e844b5e21f0c8fc893a2ea
5
5
  SHA512:
6
- metadata.gz: e328a46e133e0e7ec35cdcc410ae2f829158598e437b663bf50518ff40fca45dc3bfad2f72705a9e72af4b39342ae2b251bf92d74daa74451fdc754751ed5f06
7
- data.tar.gz: ef7ec9c9e27921e80ed3420ec92294ed3e1b1f01189243a8d000cbd16aa308265f5d25b5a587d32cb070b9c2fa7065768947ee983fdc22e74b10769158402635
6
+ metadata.gz: c7749ca2745434d37ca9b7cba13475c69d2fc40e9167b9b82cd1666782c324349f771030d78cd76f41a4880e1744360b4fcd5746769a5ccc34b0c813197673a6
7
+ data.tar.gz: c4ce6d5789409e9ff8d6f1dd6c6fe55791a6f085f66deb735eb8b49a808396d4c42f346ba86ccf9b2f4885f8be54d0ef50622c0ffaec51794bd2b5e05264b468
@@ -6,7 +6,7 @@ class HashValidator::Base
6
6
  self.errors = {}
7
7
  self.hash = hash
8
8
  self.validations = validations
9
-
9
+
10
10
  validate
11
11
  end
12
12
 
@@ -14,12 +14,16 @@ class HashValidator::Base
14
14
  errors.empty?
15
15
  end
16
16
 
17
- def self.validate(hash, validations)
17
+ def self.validate(hash, validations, strict = false)
18
+ @strict = strict
18
19
  new(hash, validations)
19
20
  end
20
-
21
-
22
- private
21
+
22
+ def self.strict?
23
+ @strict
24
+ end
25
+
26
+ private
23
27
  def validate
24
28
  HashValidator.validator_for(hash).validate(:base, self.hash, self.validations, self.errors)
25
29
  self.errors = errors[:base]
@@ -20,6 +20,12 @@ class HashValidator::Validator::HashValidator < HashValidator::Validator::Base
20
20
  validations.each do |v_key, v_value|
21
21
  HashValidator.validator_for(v_value).validate(v_key, value[v_key], v_value, errors)
22
22
  end
23
+
24
+ if HashValidator::Base.strict?
25
+ value.keys.each do |k|
26
+ errors[k] = 'key not expected' unless validations[k]
27
+ end
28
+ end
23
29
 
24
30
  # Cleanup errors (remove any empty nested errors)
25
31
  errors.delete_if { |k,v| v.empty? }
@@ -1,3 +1,3 @@
1
1
  module HashValidator
2
- VERSION = '0.3.0'
2
+ VERSION = '0.4.0'
3
3
  end
@@ -28,46 +28,46 @@ describe HashValidator do
28
28
  describe '#validate' do
29
29
  describe 'individual type validations' do
30
30
  it 'should validate hash' do
31
- validate({ v: {} }, { v: {} }).valid?.should be_true
31
+ expect(validate({ v: {} }, { v: {} }).valid?).to eq true
32
32
 
33
- validate({ v: '' }, { v: {} }).valid?.should be_false
34
- validate({ v: '' }, { v: {} }).errors.should eq({ v: 'hash required' })
33
+ expect(validate({ v: '' }, { v: {} }).valid?).to eq false
34
+ expect(validate({ v: '' }, { v: {} }).errors).to eq({ v: 'hash required' })
35
35
  end
36
36
 
37
37
  it 'should validate presence' do
38
- validate({ v: 'test' }, { v: 'required' }).valid?.should be_true
39
- validate({ v: 1234 }, { v: 'required' }).valid?.should be_true
38
+ expect(validate({ v: 'test' }, { v: 'required' }).valid?).to eq true
39
+ expect(validate({ v: 1234 }, { v: 'required' }).valid?).to eq true
40
40
 
41
- validate({ v: nil }, { v: 'required' }).valid?.should be_false
42
- validate({ v: nil }, { v: 'required' }).errors.should eq({ v: 'is required' })
41
+ expect(validate({ v: nil }, { v: 'required' }).valid?).to eq false
42
+ expect(validate({ v: nil }, { v: 'required' }).errors).to eq({ v: 'is required' })
43
43
 
44
- validate({ x: 'test' }, { v: 'required' }).valid?.should be_false
45
- validate({ x: 'test' }, { v: 'required' }).errors.should eq({ v: 'is required' })
44
+ expect(validate({ x: 'test' }, { v: 'required' }).valid?).to eq false
45
+ expect(validate({ x: 'test' }, { v: 'required' }).errors).to eq({ v: 'is required' })
46
46
 
47
- validate({ x: 1234 }, { v: 'required' }).valid?.should be_false
48
- validate({ x: 1234 }, { v: 'required' }).errors.should eq({ v: 'is required' })
47
+ expect(validate({ x: 1234 }, { v: 'required' }).valid?).to eq false
48
+ expect(validate({ x: 1234 }, { v: 'required' }).errors).to eq({ v: 'is required' })
49
49
  end
50
50
 
51
51
  it 'should validate string' do
52
- validate({ v: 'test' }, { v: 'string' }).valid?.should be_true
52
+ expect(validate({ v: 'test' }, { v: 'string' }).valid?).to eq true
53
53
 
54
- validate({ v: 123456 }, { v: 'string' }).valid?.should be_false
55
- validate({ v: 123456 }, { v: 'string' }).errors.should eq({ v: 'string required' })
54
+ expect(validate({ v: 123456 }, { v: 'string' }).valid?).to eq false
55
+ expect(validate({ v: 123456 }, { v: 'string' }).errors).to eq({ v: 'string required' })
56
56
  end
57
57
 
58
58
  it 'should validate numeric' do
59
- validate({ v: 1234 }, { v: 'numeric' }).valid?.should be_true
60
- validate({ v: '12' }, { v: 'numeric' }).valid?.should be_false
59
+ expect(validate({ v: 1234 }, { v: 'numeric' }).valid?).to eq true
60
+ expect(validate({ v: '12' }, { v: 'numeric' }).valid?).to eq false
61
61
  end
62
62
 
63
63
  it 'should validate array' do
64
- validate({ v: [ 1,2,3 ] }, { v: 'array' }).valid?.should be_true
65
- validate({ v: ' 1,2,3 ' }, { v: 'array' }).valid?.should be_false
64
+ expect(validate({ v: [ 1,2,3 ] }, { v: 'array' }).valid?).to eq true
65
+ expect(validate({ v: ' 1,2,3 ' }, { v: 'array' }).valid?).to eq false
66
66
  end
67
67
 
68
68
  it 'should validate time' do
69
- validate({ v: Time.now }, { v: 'time' }).valid?.should be_true
70
- validate({ v: '2013-04-12 13:18:05 +0930' }, { v: 'time' }).valid?.should be_false
69
+ expect(validate({ v: Time.now }, { v: 'time' }).valid?).to eq true
70
+ expect(validate({ v: '2013-04-12 13:18:05 +0930' }, { v: 'time' }).valid?).to eq false
71
71
  end
72
72
  end
73
73
 
@@ -75,67 +75,67 @@ describe HashValidator do
75
75
  let(:empty_hash) {{}}
76
76
 
77
77
  let(:simple_hash) {{
78
- foo: 1,
79
- bar: 'baz'
80
- }}
78
+ foo: 1,
79
+ bar: 'baz'
80
+ }}
81
81
 
82
82
  let(:invalid_simple_hash) {{
83
- foo: 1,
84
- bar: 2
85
- }}
83
+ foo: 1,
84
+ bar: 2
85
+ }}
86
86
 
87
87
  let(:complex_hash) {{
88
- foo: 1,
89
- bar: 'baz',
90
- user: {
91
- first_name: 'James',
92
- last_name: 'Brooks',
93
- age: 27,
94
- likes: [ 'Ruby', 'Kendo', 'Board Games' ]
95
- }
96
- }}
88
+ foo: 1,
89
+ bar: 'baz',
90
+ user: {
91
+ first_name: 'James',
92
+ last_name: 'Brooks',
93
+ age: 27,
94
+ likes: [ 'Ruby', 'Kendo', 'Board Games' ]
95
+ }
96
+ }}
97
97
 
98
98
  let(:invalid_complex_hash) {{
99
- foo: 1,
100
- bar: 2,
101
- user: {
102
- first_name: 'James',
103
- last_name: 'Brooks',
104
- likes: 'Ruby, Kendo, Board Games'
105
- }
106
- }}
99
+ foo: 1,
100
+ bar: 2,
101
+ user: {
102
+ first_name: 'James',
103
+ last_name: 'Brooks',
104
+ likes: 'Ruby, Kendo, Board Games'
105
+ }
106
+ }}
107
107
 
108
108
  describe 'no validations' do
109
109
  let(:validations) {{}}
110
110
 
111
111
  it 'should validate an empty hash' do
112
112
  v = validate(empty_hash, validations)
113
- v.valid?.should be_true
114
- v.errors.should be_empty
113
+ expect(v.valid?).to eq true
114
+ expect(v.errors).to be_empty
115
115
  end
116
116
 
117
117
  it 'should validate a simple hash' do
118
118
  v = validate(simple_hash, validations)
119
- v.valid?.should be_true
120
- v.errors.should be_empty
119
+ expect(v.valid?).to eq true
120
+ expect(v.errors).to be_empty
121
121
  end
122
122
 
123
123
  it 'should validate a simple hash 2' do
124
124
  v = validate(invalid_simple_hash, validations)
125
- v.valid?.should be_true
126
- v.errors.should be_empty
125
+ expect(v.valid?).to eq true
126
+ expect(v.errors).to be_empty
127
127
  end
128
128
 
129
129
  it 'should validate a complex hash' do
130
130
  v = validate(complex_hash, validations)
131
- v.valid?.should be_true
132
- v.errors.should be_empty
131
+ expect(v.valid?).to eq true
132
+ expect(v.errors).to be_empty
133
133
  end
134
134
 
135
135
  it 'should validate a complex hash 2' do
136
136
  v = validate(invalid_complex_hash, validations)
137
- v.valid?.should be_true
138
- v.errors.should be_empty
137
+ expect(v.valid?).to eq true
138
+ expect(v.errors).to be_empty
139
139
  end
140
140
  end
141
141
 
@@ -144,32 +144,32 @@ describe HashValidator do
144
144
 
145
145
  it 'should not validate an empty hash (stating missing with required)' do
146
146
  v = validate(empty_hash, validations)
147
- v.valid?.should be_false
148
- v.errors.should eq({ foo: 'numeric required', bar: 'string required' })
147
+ expect(v.valid?).to eq false
148
+ expect(v.errors).to eq({ foo: 'numeric required', bar: 'string required' })
149
149
  end
150
150
 
151
151
  it 'should validate a simple hash' do
152
152
  v = validate(simple_hash, validations)
153
- v.valid?.should be_true
154
- v.errors.should be_empty
153
+ expect(v.valid?).to eq true
154
+ expect(v.errors).to be_empty
155
155
  end
156
156
 
157
157
  it 'should not validate a simple hash 2' do
158
158
  v = validate(invalid_simple_hash, validations)
159
- v.valid?.should be_false
160
- v.errors.should eq({ bar: 'string required' })
159
+ expect(v.valid?).to eq false
160
+ expect(v.errors).to eq({ bar: 'string required' })
161
161
  end
162
162
 
163
163
  it 'should validate a complex hash' do
164
164
  v = validate(complex_hash, validations)
165
- v.valid?.should be_true
166
- v.errors.should be_empty
165
+ expect(v.valid?).to eq true
166
+ expect(v.errors).to be_empty
167
167
  end
168
168
 
169
169
  it 'should not validate a complex hash 2' do
170
170
  v = validate(invalid_complex_hash, validations)
171
- v.valid?.should be_false
172
- v.errors.should eq({ bar: 'string required' })
171
+ expect(v.valid?).to eq false
172
+ expect(v.errors).to eq({ bar: 'string required' })
173
173
  end
174
174
  end
175
175
 
@@ -178,14 +178,14 @@ describe HashValidator do
178
178
 
179
179
  it 'should validate a complex hash' do
180
180
  v = validate(complex_hash, validations)
181
- v.valid?.should be_true
182
- v.errors.should be_empty
181
+ expect(v.valid?).to eq true
182
+ expect(v.errors).to be_empty
183
183
  end
184
184
 
185
185
  it 'should not validate a complex hash 2' do
186
186
  v = validate(invalid_complex_hash, validations)
187
- v.valid?.should be_false
188
- v.errors.should eq({ bar: 'string required', user: { age: 'is required', likes: 'array required' } })
187
+ expect(v.valid?).to eq false
188
+ expect(v.errors).to eq({ bar: 'string required', user: { age: 'is required', likes: 'array required' } })
189
189
  end
190
190
  end
191
191
 
@@ -194,14 +194,14 @@ describe HashValidator do
194
194
 
195
195
  it 'should validate a complex hash' do
196
196
  v = validate(complex_hash, validations)
197
- v.valid?.should be_true
198
- v.errors.should be_empty
197
+ expect(v.valid?).to eq true
198
+ expect(v.errors).to be_empty
199
199
  end
200
200
 
201
201
  it 'should not validate a complex hash 2' do
202
202
  v = validate(invalid_complex_hash, validations)
203
- v.valid?.should be_false
204
- v.errors.should eq({ bar: 'string required' })
203
+ expect(v.valid?).to eq false
204
+ expect(v.errors).to eq({ bar: 'string required' })
205
205
  end
206
206
  end
207
207
 
@@ -210,16 +210,52 @@ describe HashValidator do
210
210
 
211
211
  it 'should validate a complex hash' do
212
212
  v = validate(complex_hash, validations)
213
- v.valid?.should be_true
214
- v.errors.should be_empty
213
+ expect(v.valid?).to eq true
214
+ expect(v.errors).to be_empty
215
215
  end
216
216
 
217
217
  it 'should not validate a complex hash 2' do
218
218
  v = validate(invalid_complex_hash, validations)
219
- v.valid?.should be_false
220
- v.errors.should eq({ bar: 'string required', user: { likes: 'enumerable required' } })
219
+ expect(v.valid?).to eq false
220
+ expect(v.errors).to eq({ bar: 'string required', user: { likes: 'enumerable required' } })
221
221
  end
222
222
  end
223
223
  end
224
224
  end
225
225
  end
226
+
227
+ describe 'Strict Validation' do
228
+ let(:simple_hash) { { foo: 'bar', bar: 'foo' } }
229
+
230
+ let(:complex_hash) {{
231
+ foo: 1,
232
+ user: {
233
+ first_name: 'James',
234
+ last_name: 'Brooks',
235
+ age: 27,
236
+ likes: [ 'Ruby', 'Kendo', 'Board Games' ]
237
+ }
238
+ }}
239
+
240
+ let(:validations) { { foo: 'string' } }
241
+
242
+ let(:complex_validations) {{
243
+ foo: 'integer',
244
+ user: {
245
+ first_name: 'string', age: 'integer'
246
+ }
247
+ }}
248
+
249
+ it 'reports which keys are not expected for a simple hash' do
250
+ v = validate(simple_hash, validations, true)
251
+ expect(v.valid?).to eq false
252
+ expect(v.errors).to eq({ bar: 'key not expected' })
253
+ end
254
+
255
+ it 'reports which keys are not expected for a complex hash' do
256
+ v = validate(complex_hash, complex_validations, true)
257
+ expect(v.valid?).to eq false
258
+ expect(v.errors).to eq(user: { last_name: 'key not expected', likes: 'key not expected' })
259
+ end
260
+
261
+ end
@@ -1,5 +1,5 @@
1
1
  module HashValidatorSpecHelper
2
- def validate(hash, validations)
3
- HashValidator.validate(hash, validations)
2
+ def validate(hash, validations, strict = false)
3
+ HashValidator.validate(hash, validations, strict)
4
4
  end
5
5
  end
data/spec/spec_helper.rb CHANGED
@@ -2,16 +2,13 @@ require 'coveralls'
2
2
  Coveralls.wear!
3
3
 
4
4
  require 'rubygems'
5
- require 'bundler/setup'
6
5
  require 'hash_validator'
7
6
  require 'hash_validator_spec_helper'
8
7
 
9
8
  RSpec.configure do |config|
10
- config.treat_symbols_as_metadata_keys_with_true_values = true
11
9
  config.run_all_when_everything_filtered = true
12
10
  config.filter_run :focus
13
-
14
11
  config.order = 'random'
15
-
12
+
16
13
  config.include HashValidatorSpecHelper
17
14
  end
@@ -6,13 +6,13 @@ describe HashValidator::Validator::Base do
6
6
 
7
7
  describe '#should_validate?' do
8
8
  it 'should validate the name "boolean"' do
9
- validator.should_validate?('boolean').should be_true
9
+ expect(validator.should_validate?('boolean')).to eq true
10
10
  end
11
11
 
12
12
  it 'should not validate other names' do
13
- validator.should_validate?('string').should be_false
14
- validator.should_validate?('array').should be_false
15
- validator.should_validate?(nil).should be_false
13
+ expect(validator.should_validate?('string')).to eq false
14
+ expect(validator.should_validate?('array')).to eq false
15
+ expect(validator.should_validate?(nil)).to eq false
16
16
  end
17
17
  end
18
18
 
@@ -20,27 +20,27 @@ describe HashValidator::Validator::Base do
20
20
  it 'should validate a true boolean with true' do
21
21
  validator.validate(:key, true, {}, errors)
22
22
 
23
- errors.should be_empty
23
+ expect(errors).to be_empty
24
24
  end
25
25
 
26
26
  it 'should validate a false boolean with true' do
27
27
  validator.validate(:key, false, {}, errors)
28
28
 
29
- errors.should be_empty
29
+ expect(errors).to be_empty
30
30
  end
31
31
 
32
32
  it 'should validate a nil with false' do
33
33
  validator.validate(:key, nil, {}, errors)
34
34
 
35
- errors.should_not be_empty
36
- errors.should eq({ key: 'boolean required' })
35
+ expect(errors).not_to be_empty
36
+ expect(errors).to eq({ key: 'boolean required' })
37
37
  end
38
38
 
39
39
  it 'should validate a number with false' do
40
40
  validator.validate(:key, 123, {}, errors)
41
41
 
42
- errors.should_not be_empty
43
- errors.should eq({ key: 'boolean required' })
42
+ expect(errors).not_to be_empty
43
+ expect(errors).to eq({ key: 'boolean required' })
44
44
  end
45
45
  end
46
46
  end
@@ -6,13 +6,13 @@ describe HashValidator::Validator::Base do
6
6
 
7
7
  describe '#should_validate?' do
8
8
  it 'should validate the name "email"' do
9
- validator.should_validate?('email').should be_true
9
+ expect(validator.should_validate?('email')).to eq true
10
10
  end
11
11
 
12
12
  it 'should not validate other names' do
13
- validator.should_validate?('string').should be_false
14
- validator.should_validate?('array').should be_false
15
- validator.should_validate?(nil).should be_false
13
+ expect(validator.should_validate?('string')).to eq false
14
+ expect(validator.should_validate?('array')).to eq false
15
+ expect(validator.should_validate?(nil)).to eq false
16
16
  end
17
17
  end
18
18
 
@@ -20,21 +20,21 @@ describe HashValidator::Validator::Base do
20
20
  it 'should validate an email with true' do
21
21
  validator.validate(:key, "johndoe@gmail.com", {}, errors)
22
22
 
23
- errors.should be_empty
23
+ expect(errors).to be_empty
24
24
  end
25
25
 
26
26
  it 'should validate a string without an @ symbol with false' do
27
27
  validator.validate(:key, 'test', {}, errors)
28
28
 
29
- errors.should_not be_empty
30
- errors.should eq({ key: 'is not a valid email' })
29
+ expect(errors).not_to be_empty
30
+ expect(errors).to eq({ key: 'is not a valid email' })
31
31
  end
32
32
 
33
33
  it 'should validate a number with false' do
34
34
  validator.validate(:key, 123, {}, errors)
35
35
 
36
- errors.should_not be_empty
37
- errors.should eq({ key: 'is not a valid email' })
36
+ expect(errors).not_to be_empty
37
+ expect(errors).to eq({ key: 'is not a valid email' })
38
38
  end
39
39
  end
40
40
  end
@@ -20,19 +20,19 @@ describe 'Enumerable validator' do
20
20
  let(:validations) {{ fruit: [ 'apple', 'banana', 'carrot' ] }}
21
21
 
22
22
  it 'should validate true if the value is present' do
23
- validate({ fruit: 'apple' }, validations).valid?.should be_true
23
+ expect(validate({ fruit: 'apple' }, validations).valid?).to eq true
24
24
  end
25
25
 
26
26
  it 'should validate false if the value is not present' do
27
- validate({ fruit: 'pear' }, validations).valid?.should be_false
27
+ expect(validate({ fruit: 'pear' }, validations).valid?).to eq false
28
28
  end
29
29
 
30
30
  it 'should validate false if the key is not present' do
31
- validate({ something: 'apple' }, validations).valid?.should be_false
31
+ expect(validate({ something: 'apple' }, validations).valid?).to eq false
32
32
  end
33
33
 
34
34
  it 'should provide an appropriate error message is the value is not present' do
35
- validate({ fruit: 'pear' }, validations).errors.should eq({ fruit: 'value from list required' })
35
+ expect(validate({ fruit: 'pear' }, validations).errors).to eq({ fruit: 'value from list required' })
36
36
  end
37
37
  end
38
38
 
@@ -40,10 +40,10 @@ describe 'Enumerable validator' do
40
40
  let(:validations) {{ number: 1..10 }}
41
41
 
42
42
  it 'should validate true if the value is present' do
43
- validate({ number: 5 }, validations).valid?.should be_true
43
+ expect(validate({ number: 5 }, validations).valid?).to eq true
44
44
  end
45
45
  it 'should validate false if the value is not present' do
46
- validate({ number: 15 }, validations).valid?.should be_false
46
+ expect(validate({ number: 15 }, validations).valid?).to eq false
47
47
  end
48
48
  end
49
49
 
@@ -51,10 +51,10 @@ describe 'Enumerable validator' do
51
51
  let(:validations) {{ number: 1..Float::INFINITY }}
52
52
 
53
53
  it 'should validate true if the value is present' do
54
- validate({ number: 5 }, validations).valid?.should be_true
54
+ expect(validate({ number: 5 }, validations).valid?).to eq true
55
55
  end
56
56
  it 'should validate false if the value is not present' do
57
- validate({ number: -5 }, validations).valid?.should be_false
57
+ expect(validate({ number: -5 }, validations).valid?).to eq false
58
58
  end
59
59
  end
60
60
 
@@ -62,7 +62,7 @@ describe 'Enumerable validator' do
62
62
  let(:validations) {{ fruit: [ nil, :apple, :banana ] }}
63
63
 
64
64
  it 'should validate true if a nil value is present' do
65
- validate({ fruit: nil }, validations).valid?.should be_true
65
+ expect(validate({ fruit: nil }, validations).valid?).to eq true
66
66
  end
67
67
  end
68
68
  end
@@ -29,11 +29,11 @@ describe 'Functional validator' do
29
29
  let(:validations) {{ number: lambda { |n| n.odd? } }}
30
30
 
31
31
  it 'should validate true when the number is odd' do
32
- validate({ number: 1 }, validations).valid?.should be_true
32
+ expect(validate({ number: 1 }, validations).valid?).to eq true
33
33
  end
34
34
 
35
35
  it 'should validate false when the number is even' do
36
- validate({ number: 2 }, validations).valid?.should be_false
36
+ expect(validate({ number: 2 }, validations).valid?).to eq false
37
37
  end
38
38
  end
39
39
 
@@ -41,7 +41,7 @@ describe 'Functional validator' do
41
41
  let(:validations) {{ number: lambda { |n| n.odd? } }}
42
42
 
43
43
  it 'should validate false when an exception occurs within the lambda' do
44
- validate({ number: '2' }, validations).valid?.should be_false
44
+ expect(validate({ number: '2' }, validations).valid?).to eq false
45
45
  end
46
46
  end
47
47
  end
@@ -10,13 +10,13 @@ describe HashValidator::Validator::Base do
10
10
 
11
11
  describe '#should_validate?' do
12
12
  it 'should validate an Many validation' do
13
- validator.should_validate?(many('string')).should be_true
13
+ expect(validator.should_validate?(many('string'))).to eq true
14
14
  end
15
15
 
16
16
  it 'should not validate other things' do
17
- validator.should_validate?('string').should be_false
18
- validator.should_validate?('array').should be_false
19
- validator.should_validate?(nil).should be_false
17
+ expect(validator.should_validate?('string')).to eq false
18
+ expect(validator.should_validate?('array')).to eq false
19
+ expect(validator.should_validate?(nil)).to eq false
20
20
  end
21
21
  end
22
22
 
@@ -24,37 +24,37 @@ describe HashValidator::Validator::Base do
24
24
  it 'should accept an empty array' do
25
25
  validator.validate(:key, [], many('string'), errors)
26
26
 
27
- errors.should be_empty
27
+ expect(errors).to be_empty
28
28
  end
29
29
 
30
30
  it 'should accept an array of matching elements' do
31
31
  validator.validate(:key, ['a', 'b'], many('string'), errors)
32
32
 
33
- errors.should be_empty
33
+ expect(errors).to be_empty
34
34
  end
35
35
 
36
36
  it 'should not accept an array including a non-matching element' do
37
37
  validator.validate(:key, ['a', 2], many('string'), errors)
38
38
 
39
- errors.should eq({ key: [nil, 'string required'] })
39
+ expect(errors).to eq({ key: [nil, 'string required'] })
40
40
  end
41
41
 
42
42
  it 'should accept an array of matching hashes' do
43
43
  validator.validate(:key, [{v: 'a'}, {v: 'b'}], many({v: 'string'}), errors)
44
44
 
45
- errors.should be_empty
45
+ expect(errors).to be_empty
46
46
  end
47
47
 
48
48
  it 'should not accept an array including a non-matching element' do
49
49
  validator.validate(:key, [{v: 'a'}, {v: 2}], many({v: 'string'}), errors)
50
50
 
51
- errors.should eq({ key: [nil, {v: 'string required'}] })
51
+ expect(errors).to eq({ key: [nil, {v: 'string required'}] })
52
52
  end
53
53
 
54
54
  it 'should not accept a non-enumerable' do
55
55
  validator.validate(:key, 'a', many({v: 'string'}), errors)
56
56
 
57
- errors.should eq({ key: 'enumerable required' })
57
+ expect(errors).to eq({ key: 'enumerable required' })
58
58
  end
59
59
  end
60
60
  end
@@ -10,13 +10,13 @@ describe HashValidator::Validator::Base do
10
10
 
11
11
  describe '#should_validate?' do
12
12
  it 'should validate an Optional validation' do
13
- validator.should_validate?(optional('string')).should be_true
13
+ expect(validator.should_validate?(optional('string'))).to eq true
14
14
  end
15
15
 
16
16
  it 'should not validate other things' do
17
- validator.should_validate?('string').should be_false
18
- validator.should_validate?('array').should be_false
19
- validator.should_validate?(nil).should be_false
17
+ expect(validator.should_validate?('string')).to eq false
18
+ expect(validator.should_validate?('array')).to eq false
19
+ expect(validator.should_validate?(nil)).to eq false
20
20
  end
21
21
  end
22
22
 
@@ -24,33 +24,33 @@ describe HashValidator::Validator::Base do
24
24
  it 'should accept a missing value' do
25
25
  validator.validate(:key, nil, optional('string'), errors)
26
26
 
27
- errors.should be_empty
27
+ expect(errors).to be_empty
28
28
  end
29
29
 
30
30
  it 'should accept a present, matching value' do
31
31
  validator.validate(:key, 'foo', optional('string'), errors)
32
32
 
33
- errors.should be_empty
33
+ expect(errors).to be_empty
34
34
  end
35
35
 
36
36
  it 'should reject a present, non-matching value' do
37
37
  validator.validate(:key, 123, optional('string'), errors)
38
38
 
39
- errors.should_not be_empty
40
- errors.should eq({ key: 'string required' })
39
+ expect(errors).not_to be_empty
40
+ expect(errors).to eq({ key: 'string required' })
41
41
  end
42
42
 
43
43
  it 'should accept a present, matching hash' do
44
44
  validator.validate(:key, {v: 'foo'}, optional({v: 'string'}), errors)
45
45
 
46
- errors.should be_empty
46
+ expect(errors).to be_empty
47
47
  end
48
48
 
49
49
  it 'should reject a present, non-matching hash' do
50
50
  validator.validate(:key, {}, optional({v: 'string'}), errors)
51
51
 
52
- errors.should_not be_empty
53
- errors.should eq({ key: {v: 'string required'} })
52
+ expect(errors).not_to be_empty
53
+ expect(errors).to eq({ key: {v: 'string required'} })
54
54
  end
55
55
  end
56
56
  end
@@ -6,13 +6,13 @@ describe HashValidator::Validator::Base do
6
6
 
7
7
  describe '#should_validate?' do
8
8
  it 'should validate the name "required"' do
9
- validator.should_validate?('required').should be_true
9
+ expect(validator.should_validate?('required')).to eq true
10
10
  end
11
11
 
12
12
  it 'should not validate other names' do
13
- validator.should_validate?('string').should be_false
14
- validator.should_validate?('array').should be_false
15
- validator.should_validate?(nil).should be_false
13
+ expect(validator.should_validate?('string')).to eq false
14
+ expect(validator.should_validate?('array')).to eq false
15
+ expect(validator.should_validate?(nil)).to eq false
16
16
  end
17
17
  end
18
18
 
@@ -20,26 +20,26 @@ describe HashValidator::Validator::Base do
20
20
  it 'should validate a string with true' do
21
21
  validator.validate(:key, 'test', {}, errors)
22
22
 
23
- errors.should be_empty
23
+ expect(errors).to be_empty
24
24
  end
25
25
 
26
26
  it 'should validate a number with true' do
27
27
  validator.validate(:key, 123, {}, errors)
28
28
 
29
- errors.should be_empty
29
+ expect(errors).to be_empty
30
30
  end
31
31
 
32
32
  it 'should validate a time with true' do
33
33
  validator.validate(:key, Time.now, {}, errors)
34
34
 
35
- errors.should be_empty
35
+ expect(errors).to be_empty
36
36
  end
37
37
 
38
38
  it 'should validate nil with false' do
39
39
  validator.validate(:key, nil, {}, errors)
40
40
 
41
- errors.should_not be_empty
42
- errors.should eq({ key: 'is required' })
41
+ expect(errors).not_to be_empty
42
+ expect(errors).to eq({ key: 'is required' })
43
43
  end
44
44
  end
45
45
  end
@@ -31,7 +31,7 @@ describe HashValidator::Validator::SimpleValidator do
31
31
  it "validates the string '#{value}'" do
32
32
  short_string_validator.validate(:key, value, {}, errors)
33
33
 
34
- errors.should be_empty
34
+ expect(errors).to be_empty
35
35
  end
36
36
  end
37
37
 
@@ -39,7 +39,7 @@ describe HashValidator::Validator::SimpleValidator do
39
39
  it "does not validate bad value '#{value}'" do
40
40
  short_string_validator.validate(:key, value, {}, errors)
41
41
 
42
- errors.should eq({ key: 'short_string required' })
42
+ expect(errors).to eq({ key: 'short_string required' })
43
43
  end
44
44
  end
45
45
  end
@@ -59,8 +59,8 @@ describe 'Simple validator types' do
59
59
  it "validates '#{value}' successful" do
60
60
  validator = HashValidator.validate({ v: value }, { v: type.to_s })
61
61
 
62
- validator.valid?.should be_true
63
- validator.errors.should be_empty
62
+ expect(validator.valid?).to eq true
63
+ expect(validator.errors).to be_empty
64
64
  end
65
65
  end
66
66
 
@@ -68,8 +68,8 @@ describe 'Simple validator types' do
68
68
  it "validates '#{value}' with failure" do
69
69
  validator = HashValidator.validate({ v: value }, { v: type.to_s })
70
70
 
71
- validator.valid?.should be_false
72
- validator.errors.should eq({ v: "#{type} required" })
71
+ expect(validator.valid?).to eq false
72
+ expect(validator.errors).to eq({ v: "#{type} required" })
73
73
  end
74
74
  end
75
75
  end
@@ -25,13 +25,13 @@ describe 'User-defined validator' do
25
25
 
26
26
  describe '#should_validate?' do
27
27
  it 'validates the name "odd"' do
28
- validator.should_validate?('odd').should be_true
28
+ expect(validator.should_validate?('odd')).to eq true
29
29
  end
30
30
 
31
31
  it 'does not validate other names' do
32
- validator.should_validate?('string').should be_false
33
- validator.should_validate?('array').should be_false
34
- validator.should_validate?(nil).should be_false
32
+ expect(validator.should_validate?('string')).to eq false
33
+ expect(validator.should_validate?('array')).to eq false
34
+ expect(validator.should_validate?(nil)).to eq false
35
35
  end
36
36
  end
37
37
 
@@ -39,35 +39,35 @@ describe 'User-defined validator' do
39
39
  it 'validates odd integers with true' do
40
40
  validator.validate(:key, 1, {}, errors)
41
41
 
42
- errors.should be_empty
42
+ expect(errors).to be_empty
43
43
  end
44
44
 
45
45
  it 'validates even integers with errrors' do
46
46
  validator.validate(:key, 2, {}, errors)
47
47
 
48
- errors.should_not be_empty
49
- errors.should eq({ key: 'odd required' })
48
+ expect(errors).not_to be_empty
49
+ expect(errors).to eq({ key: 'odd required' })
50
50
  end
51
51
 
52
52
  it 'validates even floats with errrors' do
53
53
  validator.validate(:key, 2.0, {}, errors)
54
54
 
55
- errors.should_not be_empty
56
- errors.should eq({ key: 'odd required' })
55
+ expect(errors).not_to be_empty
56
+ expect(errors).to eq({ key: 'odd required' })
57
57
  end
58
58
 
59
59
  it 'validates odd floats with errrors' do
60
60
  validator.validate(:key, 1.0, {}, errors)
61
61
 
62
- errors.should_not be_empty
63
- errors.should eq({ key: 'odd required' })
62
+ expect(errors).not_to be_empty
63
+ expect(errors).to eq({ key: 'odd required' })
64
64
  end
65
65
 
66
66
  it 'validates an odd integer string with errrors' do
67
67
  validator.validate(:key, '1', {}, errors)
68
68
 
69
- errors.should_not be_empty
70
- errors.should eq({ key: 'odd required' })
69
+ expect(errors).not_to be_empty
70
+ expect(errors).to eq({ key: 'odd required' })
71
71
  end
72
72
  end
73
73
 
@@ -75,21 +75,21 @@ describe 'User-defined validator' do
75
75
  before { HashValidator.append_validator(validator) rescue nil } # rescue to prevent: validators need to have unique names
76
76
 
77
77
  it 'can be looked up using #validator_for' do
78
- HashValidator.validator_for('odd').should be_a_kind_of(HashValidator::Validator::OddValidator)
78
+ expect(HashValidator.validator_for('odd')).to be_a_kind_of(HashValidator::Validator::OddValidator)
79
79
  end
80
80
 
81
81
  it 'can be used in validations - test 1' do
82
82
  validator = HashValidator.validate({ age: 27 }, { age: 'odd' })
83
83
 
84
- validator.valid?.should be_true
85
- validator.errors.should be_empty
84
+ expect(validator.valid?).to eq true
85
+ expect(validator.errors).to be_empty
86
86
  end
87
87
 
88
88
  it 'can be used in validations - test 2' do
89
89
  validator = HashValidator.validate({ age: 40 }, { age: 'odd' })
90
90
 
91
- validator.valid?.should be_false
92
- validator.errors.should eq({ age: 'odd required' })
91
+ expect(validator.valid?).to eq false
92
+ expect(validator.errors).to eq({ age: 'odd required' })
93
93
  end
94
94
  end
95
95
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hash_validator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Brooks
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-07 00:00:00.000000000 Z
11
+ date: 2015-04-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -133,7 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
133
  version: '0'
134
134
  requirements: []
135
135
  rubyforge_project:
136
- rubygems_version: 2.2.2
136
+ rubygems_version: 2.4.6
137
137
  signing_key:
138
138
  specification_version: 4
139
139
  summary: Ruby library to validate hashes (Hash) against user-defined requirements