jnunemaker-validatable 1.8.0 → 1.8.1
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.
- data/Rakefile +7 -6
- data/VERSION.yml +2 -2
- data/lib/validatable.rb +2 -0
- data/lib/validatable/macros.rb +8 -0
- data/lib/validatable/validations/validates_exclusion_of.rb +17 -0
- data/lib/validatable/validations/validates_inclusion_of.rb +17 -0
- data/test/functional/test_validates_exclusion_of.rb +29 -0
- data/test/functional/test_validates_inclusion_of.rb +29 -0
- data/test/unit/test_validates_exclusion_of.rb +23 -0
- data/test/unit/test_validates_inclusion_of.rb +23 -0
- metadata +13 -3
data/Rakefile
CHANGED
@@ -3,12 +3,13 @@ require 'rake'
|
|
3
3
|
|
4
4
|
require 'jeweler'
|
5
5
|
Jeweler::Tasks.new do |gem|
|
6
|
-
gem.name
|
7
|
-
gem.summary
|
8
|
-
gem.
|
9
|
-
gem.
|
10
|
-
gem.
|
11
|
-
gem.
|
6
|
+
gem.name = "jnunemaker-validatable"
|
7
|
+
gem.summary = %Q{Validatable is a library for adding validations.}
|
8
|
+
gem.description = %Q{Validatable is a library for adding validations.}
|
9
|
+
gem.email = "nunemaker@gmail.com"
|
10
|
+
gem.homepage = "http://github.com/jnunemaker/validatable"
|
11
|
+
gem.authors = ['Jay Fields', 'John Nunemaker']
|
12
|
+
gem.files = FileList['lib/**/*.rb', '[A-Z]*', 'test/**/*'].to_a
|
12
13
|
end
|
13
14
|
|
14
15
|
Jeweler::GemcutterTasks.new
|
data/VERSION.yml
CHANGED
data/lib/validatable.rb
CHANGED
@@ -18,5 +18,7 @@ require 'validatable/validations/validates_confirmation_of'
|
|
18
18
|
require 'validatable/validations/validates_length_of'
|
19
19
|
require 'validatable/validations/validates_true_for'
|
20
20
|
require 'validatable/validations/validates_numericality_of'
|
21
|
+
require 'validatable/validations/validates_exclusion_of'
|
22
|
+
require 'validatable/validations/validates_inclusion_of'
|
21
23
|
require 'validatable/validations/validates_each'
|
22
24
|
require 'validatable/validations/validates_associated'
|
data/lib/validatable/macros.rb
CHANGED
@@ -193,6 +193,14 @@ module Validatable
|
|
193
193
|
def validates_true_for(*args)
|
194
194
|
add_validations(args, ValidatesTrueFor)
|
195
195
|
end
|
196
|
+
|
197
|
+
def validates_exclusion_of(*args)
|
198
|
+
add_validations(args, ValidatesExclusionOf)
|
199
|
+
end
|
200
|
+
|
201
|
+
def validates_inclusion_of(*args)
|
202
|
+
add_validations(args, ValidatesInclusionOf)
|
203
|
+
end
|
196
204
|
|
197
205
|
# call-seq: validates_associated(*args)
|
198
206
|
#
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Validatable
|
2
|
+
class ValidatesExclusionOf < ValidationBase #:nodoc:
|
3
|
+
required_option :within
|
4
|
+
|
5
|
+
def valid?(instance)
|
6
|
+
value = instance.send(attribute)
|
7
|
+
return true if allow_nil && value.nil?
|
8
|
+
return true if allow_blank && value.blank?
|
9
|
+
|
10
|
+
!within.include?(value)
|
11
|
+
end
|
12
|
+
|
13
|
+
def message(instance)
|
14
|
+
super || "is reserved"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Validatable
|
2
|
+
class ValidatesInclusionOf < ValidationBase
|
3
|
+
required_option :within
|
4
|
+
|
5
|
+
def valid?(instance)
|
6
|
+
value = instance.send(attribute)
|
7
|
+
return true if allow_nil && value.nil?
|
8
|
+
return true if allow_blank && value.blank?
|
9
|
+
|
10
|
+
within.include?(value)
|
11
|
+
end
|
12
|
+
|
13
|
+
def message(instance)
|
14
|
+
super || "is not in the list"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
|
2
|
+
|
3
|
+
module Functional
|
4
|
+
class ValidatesExclusionOfTest < Test::Unit::TestCase
|
5
|
+
test "given excluded state, when validated, then error is in the objects error collection" do
|
6
|
+
klass = Class.new do
|
7
|
+
include Validatable
|
8
|
+
attr_accessor :state
|
9
|
+
validates_exclusion_of :state, :within => %w(in out)
|
10
|
+
end
|
11
|
+
instance = klass.new
|
12
|
+
instance.state = 'in'
|
13
|
+
instance.valid?
|
14
|
+
assert_equal "is reserved", instance.errors.on(:state)
|
15
|
+
end
|
16
|
+
|
17
|
+
test "given non-excluded state, when validated, then no error is in the objects error collection" do
|
18
|
+
klass = Class.new do
|
19
|
+
include Validatable
|
20
|
+
attr_accessor :state
|
21
|
+
validates_exclusion_of :state, :within => %w(in out)
|
22
|
+
end
|
23
|
+
instance = klass.new
|
24
|
+
instance.state = 'foo'
|
25
|
+
instance.valid?
|
26
|
+
assert_nil instance.errors.on(:state)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
|
2
|
+
|
3
|
+
module Functional
|
4
|
+
class ValidatesInclusionOfTest < Test::Unit::TestCase
|
5
|
+
test "given state not in list, when validated, then error is in the objects error collection" do
|
6
|
+
klass = Class.new do
|
7
|
+
include Validatable
|
8
|
+
attr_accessor :state
|
9
|
+
validates_inclusion_of :state, :within => %w(in out)
|
10
|
+
end
|
11
|
+
instance = klass.new
|
12
|
+
instance.state = 'foo'
|
13
|
+
instance.valid?
|
14
|
+
assert_equal "is not in the list", instance.errors.on(:state)
|
15
|
+
end
|
16
|
+
|
17
|
+
test "given state in list, when validated, then no error is in the objects error collection" do
|
18
|
+
klass = Class.new do
|
19
|
+
include Validatable
|
20
|
+
attr_accessor :state
|
21
|
+
validates_inclusion_of :state, :within => %w(in out)
|
22
|
+
end
|
23
|
+
instance = klass.new
|
24
|
+
instance.state = 'in'
|
25
|
+
instance.valid?
|
26
|
+
assert_nil instance.errors.on(:state)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
|
2
|
+
|
3
|
+
Expectations do
|
4
|
+
expect false do
|
5
|
+
validation = Validatable::ValidatesExclusionOf.new stub_everything, :state, :within => %w(in out)
|
6
|
+
validation.valid?(stub(:state => 'in'))
|
7
|
+
end
|
8
|
+
|
9
|
+
expect true do
|
10
|
+
validation = Validatable::ValidatesExclusionOf.new stub_everything, :state, :within => %w(in out)
|
11
|
+
validation.valid?(stub(:state => 'foo'))
|
12
|
+
end
|
13
|
+
|
14
|
+
expect true do
|
15
|
+
validation = Validatable::ValidatesExclusionOf.new stub_everything, :state, :within => %w(in out), :allow_blank => true
|
16
|
+
validation.valid?(stub(:state => ''))
|
17
|
+
end
|
18
|
+
|
19
|
+
expect true do
|
20
|
+
validation = Validatable::ValidatesExclusionOf.new stub_everything, :state, :within => %w(in out), :allow_nil => true
|
21
|
+
validation.valid?(stub(:state => nil))
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
|
2
|
+
|
3
|
+
Expectations do
|
4
|
+
expect true do
|
5
|
+
validation = Validatable::ValidatesInclusionOf.new stub_everything, :state, :within => %w(in out)
|
6
|
+
validation.valid?(stub(:state => 'in'))
|
7
|
+
end
|
8
|
+
|
9
|
+
expect false do
|
10
|
+
validation = Validatable::ValidatesInclusionOf.new stub_everything, :state, :within => %w(in out)
|
11
|
+
validation.valid?(stub(:state => 'foo'))
|
12
|
+
end
|
13
|
+
|
14
|
+
expect true do
|
15
|
+
validation = Validatable::ValidatesInclusionOf.new stub_everything, :state, :within => %w(in out), :allow_blank => true
|
16
|
+
validation.valid?(stub(:state => ''))
|
17
|
+
end
|
18
|
+
|
19
|
+
expect true do
|
20
|
+
validation = Validatable::ValidatesInclusionOf.new stub_everything, :state, :within => %w(in out), :allow_nil => true
|
21
|
+
validation.valid?(stub(:state => nil))
|
22
|
+
end
|
23
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jnunemaker-validatable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.8.
|
4
|
+
version: 1.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jay Fields
|
@@ -10,11 +10,11 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-
|
13
|
+
date: 2009-11-01 00:00:00 -04:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|
17
|
-
description:
|
17
|
+
description: Validatable is a library for adding validations.
|
18
18
|
email: nunemaker@gmail.com
|
19
19
|
executables: []
|
20
20
|
|
@@ -40,7 +40,9 @@ files:
|
|
40
40
|
- lib/validatable/validations/validates_associated.rb
|
41
41
|
- lib/validatable/validations/validates_confirmation_of.rb
|
42
42
|
- lib/validatable/validations/validates_each.rb
|
43
|
+
- lib/validatable/validations/validates_exclusion_of.rb
|
43
44
|
- lib/validatable/validations/validates_format_of.rb
|
45
|
+
- lib/validatable/validations/validates_inclusion_of.rb
|
44
46
|
- lib/validatable/validations/validates_length_of.rb
|
45
47
|
- lib/validatable/validations/validates_numericality_of.rb
|
46
48
|
- lib/validatable/validations/validates_presence_of.rb
|
@@ -51,7 +53,9 @@ files:
|
|
51
53
|
- test/functional/test_validates_associated.rb
|
52
54
|
- test/functional/test_validates_confirmation_of.rb
|
53
55
|
- test/functional/test_validates_each.rb
|
56
|
+
- test/functional/test_validates_exclusion_of.rb
|
54
57
|
- test/functional/test_validates_format_of.rb
|
58
|
+
- test/functional/test_validates_inclusion_of.rb
|
55
59
|
- test/functional/test_validates_length_of.rb
|
56
60
|
- test/functional/test_validates_numericality_of.rb
|
57
61
|
- test/functional/test_validates_presence_of.rb
|
@@ -63,7 +67,9 @@ files:
|
|
63
67
|
- test/unit/test_validates_acceptance_of.rb
|
64
68
|
- test/unit/test_validates_associated.rb
|
65
69
|
- test/unit/test_validates_confirmation_of.rb
|
70
|
+
- test/unit/test_validates_exclusion_of.rb
|
66
71
|
- test/unit/test_validates_format_of.rb
|
72
|
+
- test/unit/test_validates_inclusion_of.rb
|
67
73
|
- test/unit/test_validates_length_of.rb
|
68
74
|
- test/unit/test_validates_numericality_of.rb
|
69
75
|
- test/unit/test_validates_presence_of.rb
|
@@ -103,7 +109,9 @@ test_files:
|
|
103
109
|
- test/functional/test_validates_associated.rb
|
104
110
|
- test/functional/test_validates_confirmation_of.rb
|
105
111
|
- test/functional/test_validates_each.rb
|
112
|
+
- test/functional/test_validates_exclusion_of.rb
|
106
113
|
- test/functional/test_validates_format_of.rb
|
114
|
+
- test/functional/test_validates_inclusion_of.rb
|
107
115
|
- test/functional/test_validates_length_of.rb
|
108
116
|
- test/functional/test_validates_numericality_of.rb
|
109
117
|
- test/functional/test_validates_presence_of.rb
|
@@ -115,7 +123,9 @@ test_files:
|
|
115
123
|
- test/unit/test_validates_acceptance_of.rb
|
116
124
|
- test/unit/test_validates_associated.rb
|
117
125
|
- test/unit/test_validates_confirmation_of.rb
|
126
|
+
- test/unit/test_validates_exclusion_of.rb
|
118
127
|
- test/unit/test_validates_format_of.rb
|
128
|
+
- test/unit/test_validates_inclusion_of.rb
|
119
129
|
- test/unit/test_validates_length_of.rb
|
120
130
|
- test/unit/test_validates_numericality_of.rb
|
121
131
|
- test/unit/test_validates_presence_of.rb
|