hash_validator 0.3.0 → 0.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 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