veto 0.0.2 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +3 -0
- data/README.md +46 -0
- data/Rakefile +9 -0
- data/lib/veto/attribute_validator_factory.rb +4 -0
- data/lib/veto/configuration.rb +14 -10
- data/lib/veto/validators/greater_than_or_equal_to_validator.rb +22 -0
- data/lib/veto/validators/greater_than_validator.rb +22 -0
- data/lib/veto/validators/less_than_or_equal_to_validator.rb +22 -0
- data/lib/veto/validators/less_than_validator.rb +22 -0
- data/lib/veto/version.rb +1 -1
- data/spec/system/validator_spec.rb +116 -0
- data/veto.gemspec +1 -0
- metadata +21 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4206c75190ac20d67c36162f76b7ea2b9e35e674
|
4
|
+
data.tar.gz: f12554b84b0c9969a26948daf5df0f980c622e96
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 838c7c98791d279f9a9031ae2273ce1cae41f92d8f619adc02386e47ce1244b4f20c5dfa94034452fbc01af9bdf7b5b5ad0e11d94129c46702a56cdbe34f43c5
|
7
|
+
data.tar.gz: 9dc1a3f7b53683c1c00ae27f6e24113cd989066631cadddd1ad765f1213641c4b6260d112c7ec539587fbc4b550e9b51a47e05fa93f6ae9c330bbcb9fe83e1d0
|
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -4,6 +4,8 @@ Veto provides lightweight validation for plain old ruby objects, using a familia
|
|
4
4
|
|
5
5
|
Tested on the following Rubies: MRI 2.0.0.
|
6
6
|
|
7
|
+
[](https://travis-ci.org/kodio/veto)
|
8
|
+
|
7
9
|
## Installation
|
8
10
|
|
9
11
|
Add this line to your application's Gemfile:
|
@@ -220,6 +222,50 @@ class PersonValidator
|
|
220
222
|
end
|
221
223
|
```
|
222
224
|
|
225
|
+
### Greater Than
|
226
|
+
This helper checks that the specified attribute can be a valid float which is greater than a specified value.
|
227
|
+
|
228
|
+
```ruby
|
229
|
+
class PersonValidator
|
230
|
+
include Veto.validator
|
231
|
+
|
232
|
+
validates :age, :greater_than => 12
|
233
|
+
end
|
234
|
+
```
|
235
|
+
|
236
|
+
### Greater Than Or Equal To
|
237
|
+
This helper checks that the specified attribute can be a valid float which is greater than or equal to a specified value.
|
238
|
+
|
239
|
+
```ruby
|
240
|
+
class PersonValidator
|
241
|
+
include Veto.validator
|
242
|
+
|
243
|
+
validates :age, :greater_than_or_equal_to => 12
|
244
|
+
end
|
245
|
+
```
|
246
|
+
|
247
|
+
### Less Than
|
248
|
+
This helper checks that the specified attribute can be a valid float which is less than a specified value.
|
249
|
+
|
250
|
+
```ruby
|
251
|
+
class PersonValidator
|
252
|
+
include Veto.validator
|
253
|
+
|
254
|
+
validates :age, :less_than => 11
|
255
|
+
end
|
256
|
+
```
|
257
|
+
|
258
|
+
### Less Than Or Equal To
|
259
|
+
This helper checks that the specified attribute can be a valid float which is less than or equal to a specified value.
|
260
|
+
|
261
|
+
```ruby
|
262
|
+
class PersonValidator
|
263
|
+
include Veto.validator
|
264
|
+
|
265
|
+
validates :age, :less_than_or_equal_to => 11
|
266
|
+
end
|
267
|
+
```
|
268
|
+
|
223
269
|
### Exact Length
|
224
270
|
This helper checks that an attribute is an exact length in characters.
|
225
271
|
|
data/Rakefile
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
require 'veto/validators/exact_length_validator'
|
2
2
|
require 'veto/validators/format_validator'
|
3
|
+
require 'veto/validators/greater_than_validator'
|
4
|
+
require 'veto/validators/greater_than_or_equal_to_validator'
|
3
5
|
require 'veto/validators/inclusion_validator'
|
4
6
|
require 'veto/validators/integer_validator'
|
5
7
|
require 'veto/validators/length_range_validator'
|
8
|
+
require 'veto/validators/less_than_validator'
|
9
|
+
require 'veto/validators/less_than_or_equal_to_validator'
|
6
10
|
require 'veto/validators/max_length_validator'
|
7
11
|
require 'veto/validators/min_length_validator'
|
8
12
|
require 'veto/validators/not_null_validator'
|
data/lib/veto/configuration.rb
CHANGED
@@ -2,16 +2,20 @@ module Veto
|
|
2
2
|
class Configuration
|
3
3
|
class Message
|
4
4
|
DEFAULT_MESSAGES = {
|
5
|
-
:exact_length
|
6
|
-
:format
|
7
|
-
:
|
8
|
-
:
|
9
|
-
:
|
10
|
-
:
|
11
|
-
:
|
12
|
-
:
|
13
|
-
:
|
14
|
-
:
|
5
|
+
:exact_length => lambda{|exact| "is not #{exact} characters"},
|
6
|
+
:format => lambda{"is not valid"},
|
7
|
+
:greater_than => lambda{|boundary| "must be greater than #{boundary}"},
|
8
|
+
:greater_than_or_equal_to => lambda{|boundary| "must be greater than or equal to #{boundary}"},
|
9
|
+
:inclusion => lambda{|set| "is not in set: #{set.inspect}"},
|
10
|
+
:integer => lambda{"is not a number"},
|
11
|
+
:length_range => lambda{"is too short or too long"},
|
12
|
+
:less_than => lambda{|boundary| "must be less than #{boundary}"},
|
13
|
+
:less_than_or_equal_to => lambda{|boundary| "must be less than or equal to #{boundary}"},
|
14
|
+
:max_length => lambda{|max| "is longer than #{max} characters"},
|
15
|
+
:min_length => lambda{|min| "is shorter than #{min} characters"},
|
16
|
+
:not_null => lambda{"is not present"},
|
17
|
+
:numeric => lambda{"is not a number"},
|
18
|
+
:presence => lambda{"is not present"}
|
15
19
|
}
|
16
20
|
|
17
21
|
def get type, *args
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'veto/validators/attribute_validator'
|
2
|
+
|
3
|
+
module Veto
|
4
|
+
class GreaterThanOrEqualToValidator < AttributeValidator
|
5
|
+
def validate entity, attribute, value, errors, options={}
|
6
|
+
boundary = options.fetch(:with)
|
7
|
+
message = options.fetch(:message, :greater_than_or_equal_to)
|
8
|
+
on = options.fetch(:on, attribute)
|
9
|
+
|
10
|
+
begin
|
11
|
+
v = Kernel.Float(value.to_s)
|
12
|
+
nil
|
13
|
+
rescue
|
14
|
+
return errors.add(on, message, boundary)
|
15
|
+
end
|
16
|
+
|
17
|
+
unless v >= boundary
|
18
|
+
errors.add(on, message, boundary)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'veto/validators/attribute_validator'
|
2
|
+
|
3
|
+
module Veto
|
4
|
+
class GreaterThanValidator < AttributeValidator
|
5
|
+
def validate entity, attribute, value, errors, options={}
|
6
|
+
boundary = options.fetch(:with)
|
7
|
+
message = options.fetch(:message, :greater_than)
|
8
|
+
on = options.fetch(:on, attribute)
|
9
|
+
|
10
|
+
begin
|
11
|
+
v = Kernel.Float(value.to_s)
|
12
|
+
nil
|
13
|
+
rescue
|
14
|
+
return errors.add(on, message, boundary)
|
15
|
+
end
|
16
|
+
|
17
|
+
unless v > boundary
|
18
|
+
errors.add(on, message, boundary)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'veto/validators/attribute_validator'
|
2
|
+
|
3
|
+
module Veto
|
4
|
+
class LessThanOrEqualToValidator < AttributeValidator
|
5
|
+
def validate entity, attribute, value, errors, options={}
|
6
|
+
boundary = options.fetch(:with)
|
7
|
+
message = options.fetch(:message, :less_than_or_equal_to)
|
8
|
+
on = options.fetch(:on, attribute)
|
9
|
+
|
10
|
+
begin
|
11
|
+
v = Kernel.Float(value.to_s)
|
12
|
+
nil
|
13
|
+
rescue
|
14
|
+
return errors.add(on, message, boundary)
|
15
|
+
end
|
16
|
+
|
17
|
+
unless v <= boundary
|
18
|
+
errors.add(on, message, boundary)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'veto/validators/attribute_validator'
|
2
|
+
|
3
|
+
module Veto
|
4
|
+
class LessThanValidator < AttributeValidator
|
5
|
+
def validate entity, attribute, value, errors, options={}
|
6
|
+
boundary = options.fetch(:with)
|
7
|
+
message = options.fetch(:message, :less_than)
|
8
|
+
on = options.fetch(:on, attribute)
|
9
|
+
|
10
|
+
begin
|
11
|
+
v = Kernel.Float(value.to_s)
|
12
|
+
nil
|
13
|
+
rescue
|
14
|
+
return errors.add(on, message, boundary)
|
15
|
+
end
|
16
|
+
|
17
|
+
unless v < boundary
|
18
|
+
errors.add(on, message, boundary)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/veto/version.rb
CHANGED
@@ -61,6 +61,122 @@ describe Veto do
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
+
describe 'greater_than' do
|
65
|
+
let(:options) {{:greater_than => 10}}
|
66
|
+
|
67
|
+
context 'when value is greater than option' do
|
68
|
+
let(:value) { 11 }
|
69
|
+
it { errors.must_be_nil }
|
70
|
+
end
|
71
|
+
|
72
|
+
context 'when float is greater than option' do
|
73
|
+
let(:value) { 11.123 }
|
74
|
+
it { errors.must_be_nil }
|
75
|
+
end
|
76
|
+
|
77
|
+
context 'when value is equal to option' do
|
78
|
+
let(:value) { 10 }
|
79
|
+
it { errors.must_equal ["must be greater than 10"] }
|
80
|
+
end
|
81
|
+
|
82
|
+
context 'when value is less than option' do
|
83
|
+
let(:value) { 9 }
|
84
|
+
it { errors.must_equal ["must be greater than 10"] }
|
85
|
+
end
|
86
|
+
|
87
|
+
context 'when value is string' do
|
88
|
+
let(:value) { 'abc' }
|
89
|
+
it { errors.must_equal ["must be greater than 10"] }
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe 'greater_than_or_equal_to' do
|
94
|
+
let(:options) {{:greater_than_or_equal_to => 10}}
|
95
|
+
|
96
|
+
context 'when value is greater than option' do
|
97
|
+
let(:value) { 11 }
|
98
|
+
it { errors.must_be_nil }
|
99
|
+
end
|
100
|
+
|
101
|
+
context 'when float value is greater than option' do
|
102
|
+
let(:value) { 11.123 }
|
103
|
+
it { errors.must_be_nil }
|
104
|
+
end
|
105
|
+
|
106
|
+
context 'when value is equal to option' do
|
107
|
+
let(:value) { 10 }
|
108
|
+
it { errors.must_be_nil }
|
109
|
+
end
|
110
|
+
|
111
|
+
context 'when value is less than option' do
|
112
|
+
let(:value) { 9 }
|
113
|
+
it { errors.must_equal ["must be greater than or equal to 10"] }
|
114
|
+
end
|
115
|
+
|
116
|
+
context 'when value is a string' do
|
117
|
+
let(:value) { 'abc' }
|
118
|
+
it { errors.must_equal ["must be greater than or equal to 10"] }
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
describe 'less_than' do
|
123
|
+
let(:options) {{:less_than => 10}}
|
124
|
+
|
125
|
+
context 'when value is less than option' do
|
126
|
+
let(:value) { 9 }
|
127
|
+
it { errors.must_be_nil }
|
128
|
+
end
|
129
|
+
|
130
|
+
context 'when float value is less than option' do
|
131
|
+
let(:value) { 8.123 }
|
132
|
+
it { errors.must_be_nil }
|
133
|
+
end
|
134
|
+
|
135
|
+
context 'when value is equal to option' do
|
136
|
+
let(:value) { 10 }
|
137
|
+
it { errors.must_equal ["must be less than 10"] }
|
138
|
+
end
|
139
|
+
|
140
|
+
context 'when value is greater than option' do
|
141
|
+
let(:value) { 11 }
|
142
|
+
it { errors.must_equal ["must be less than 10"] }
|
143
|
+
end
|
144
|
+
|
145
|
+
context 'when value is a string' do
|
146
|
+
let(:value) { 'abc' }
|
147
|
+
it { errors.must_equal ["must be less than 10"] }
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
describe 'less_than_or_equal_to' do
|
152
|
+
let(:options) {{:less_than_or_equal_to => 10}}
|
153
|
+
|
154
|
+
context 'when value is less than option' do
|
155
|
+
let(:value) { 9 }
|
156
|
+
it { errors.must_be_nil }
|
157
|
+
end
|
158
|
+
|
159
|
+
context 'when float value is less than option' do
|
160
|
+
let(:value) { 8.123 }
|
161
|
+
it { errors.must_be_nil }
|
162
|
+
end
|
163
|
+
|
164
|
+
context 'when value is equal to option' do
|
165
|
+
let(:value) { 10 }
|
166
|
+
it { errors.must_be_nil }
|
167
|
+
end
|
168
|
+
|
169
|
+
context 'when value is greater than option' do
|
170
|
+
let(:value) { 11 }
|
171
|
+
it { errors.must_equal ["must be less than or equal to 10"] }
|
172
|
+
end
|
173
|
+
|
174
|
+
context 'when value is a string' do
|
175
|
+
let(:value) { 'abc' }
|
176
|
+
it { errors.must_equal ["must be less than or equal to 10"] }
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
64
180
|
describe 'inclusion' do
|
65
181
|
context 'when set is array' do
|
66
182
|
let(:options) {{:inclusion => %w(cat dog bird rabbit)}}
|
data/veto.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: veto
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erik Lott
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
11
|
+
date: 2013-11-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 0.14.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: minitest
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 5.0.8
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 5.0.8
|
55
69
|
description: Validations for ruby objects
|
56
70
|
email:
|
57
71
|
- erik.lott@kodio.com
|
@@ -60,6 +74,7 @@ extensions: []
|
|
60
74
|
extra_rdoc_files: []
|
61
75
|
files:
|
62
76
|
- .gitignore
|
77
|
+
- .travis.yml
|
63
78
|
- Gemfile
|
64
79
|
- LICENSE.txt
|
65
80
|
- README.md
|
@@ -79,9 +94,13 @@ files:
|
|
79
94
|
- lib/veto/validators/custom_method_validator.rb
|
80
95
|
- lib/veto/validators/exact_length_validator.rb
|
81
96
|
- lib/veto/validators/format_validator.rb
|
97
|
+
- lib/veto/validators/greater_than_or_equal_to_validator.rb
|
98
|
+
- lib/veto/validators/greater_than_validator.rb
|
82
99
|
- lib/veto/validators/inclusion_validator.rb
|
83
100
|
- lib/veto/validators/integer_validator.rb
|
84
101
|
- lib/veto/validators/length_range_validator.rb
|
102
|
+
- lib/veto/validators/less_than_or_equal_to_validator.rb
|
103
|
+
- lib/veto/validators/less_than_validator.rb
|
85
104
|
- lib/veto/validators/max_length_validator.rb
|
86
105
|
- lib/veto/validators/min_length_validator.rb
|
87
106
|
- lib/veto/validators/not_null_validator.rb
|