durran-validatable 1.7.5 → 1.8.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.
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :minor: 7
3
- :patch: 5
2
+ :minor: 8
3
+ :patch: 0
4
4
  :major: 1
data/lib/validatable.rb CHANGED
@@ -23,3 +23,6 @@ require File.join(dir, 'validations/validates_true_for')
23
23
  require File.join(dir, 'validations/validates_numericality_of')
24
24
  require File.join(dir, 'validations/validates_each')
25
25
  require File.join(dir, 'validations/validates_associated')
26
+ require File.join(dir, 'validations/validates_uniqueness_of')
27
+ require File.join(dir, 'validations/validates_inclusion_of')
28
+ require File.join(dir, 'validations/validates_exclusion_of')
@@ -0,0 +1,16 @@
1
+ module Validatable
2
+ class ValidatesExclusionOf < Validatable::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
+ !within.include?(value)
10
+ end
11
+
12
+ def message(instance)
13
+ super || "is excluded"
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ module Validatable
2
+ class ValidatesInclusionOf < Validatable::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
+ within.include?(value)
10
+ end
11
+
12
+ def message(instance)
13
+ super || "is not included"
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,18 @@
1
+ module Validatable
2
+ class ValidatesUniquenessOf < Validatable::ValidationBase
3
+ option :scope
4
+
5
+ def valid?(instance)
6
+ conditions = { self.attribute => instance.send(attribute) }
7
+ if scope
8
+ conditions.merge!(scope => instance.send(scope))
9
+ end
10
+ doc = instance.class.first(:conditions => conditions)
11
+ doc.nil? || instance.id == doc.id
12
+ end
13
+
14
+ def message(instance)
15
+ super || "must be unique"
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,20 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+
3
+ Expectations do
4
+
5
+ expect true do
6
+ validation = Validatable::ValidatesExclusionOf.new stub_everything, :name, :within => ["test"]
7
+ validation.valid?(stub(:name => "testing"))
8
+ end
9
+
10
+ expect true do
11
+ validation = Validatable::ValidatesExclusionOf.new stub_everything, :name, :allow_nil => true, :within => ["test"]
12
+ validation.valid?(stub(:name => nil))
13
+ end
14
+
15
+ expect true do
16
+ validation = Validatable::ValidatesExclusionOf.new stub_everything, :name, :allow_blank => true, :within => ["test"]
17
+ validation.valid?(stub(:name => ''))
18
+ end
19
+
20
+ end
@@ -0,0 +1,25 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+
3
+ Expectations do
4
+
5
+ expect false do
6
+ validation = Validatable::ValidatesInclusionOf.new stub_everything, :name, :within => ["test"]
7
+ validation.valid?(stub_everything)
8
+ end
9
+
10
+ expect true do
11
+ validation = Validatable::ValidatesInclusionOf.new stub_everything, :name, :within => ["test"]
12
+ validation.valid?(stub(:name => "test"))
13
+ end
14
+
15
+ expect true do
16
+ validation = Validatable::ValidatesInclusionOf.new stub_everything, :name, :allow_nil => true, :within => ["test"]
17
+ validation.valid?(stub(:name => nil))
18
+ end
19
+
20
+ expect true do
21
+ validation = Validatable::ValidatesInclusionOf.new stub_everything, :name, :allow_blank => true, :within => ["test"]
22
+ validation.valid?(stub(:name => ''))
23
+ end
24
+
25
+ end
@@ -0,0 +1,18 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+
3
+ Expectations do
4
+
5
+ expect false do
6
+ doc = stub(:id => 1)
7
+ instance = stub(:class => stub(:first => doc), :id => 2, :name => "test")
8
+ validation = Validatable::ValidatesUniquenessOf.new stub_everything, :name
9
+ validation.valid?(instance)
10
+ end
11
+
12
+ expect true do
13
+ instance = stub(:class => stub(:first => nil), :id => 2, :name => "test")
14
+ validation = Validatable::ValidatesUniquenessOf.new stub_everything, :name
15
+ validation.valid?(instance)
16
+ end
17
+
18
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: durran-validatable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.5
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jay Fields
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2009-10-27 00:00:00 -04:00
14
+ date: 2009-10-31 00:00:00 -04:00
15
15
  default_executable:
16
16
  dependencies: []
17
17
 
@@ -41,11 +41,14 @@ files:
41
41
  - lib/validations/validates_associated.rb
42
42
  - lib/validations/validates_confirmation_of.rb
43
43
  - lib/validations/validates_each.rb
44
+ - lib/validations/validates_exclusion_of.rb
44
45
  - lib/validations/validates_format_of.rb
46
+ - lib/validations/validates_inclusion_of.rb
45
47
  - lib/validations/validates_length_of.rb
46
48
  - lib/validations/validates_numericality_of.rb
47
49
  - lib/validations/validates_presence_of.rb
48
50
  - lib/validations/validates_true_for.rb
51
+ - lib/validations/validates_uniqueness_of.rb
49
52
  - lib/validations/validation_base.rb
50
53
  - test/all_tests.rb
51
54
  - test/functional/test_validatable.rb
@@ -65,11 +68,14 @@ files:
65
68
  - test/unit/test_validates_acceptance_of.rb
66
69
  - test/unit/test_validates_associated.rb
67
70
  - test/unit/test_validates_confirmation_of.rb
71
+ - test/unit/test_validates_exclusion_of.rb
68
72
  - test/unit/test_validates_format_of.rb
73
+ - test/unit/test_validates_inclusion_of.rb
69
74
  - test/unit/test_validates_length_of.rb
70
75
  - test/unit/test_validates_numericality_of.rb
71
76
  - test/unit/test_validates_presence_of.rb
72
77
  - test/unit/test_validates_true_for.rb
78
+ - test/unit/test_validates_uniqueness_of.rb
73
79
  - test/unit/test_validation_base.rb
74
80
  has_rdoc: true
75
81
  homepage: http://github.com/durran/validatable
@@ -118,9 +124,12 @@ test_files:
118
124
  - test/unit/test_validates_acceptance_of.rb
119
125
  - test/unit/test_validates_associated.rb
120
126
  - test/unit/test_validates_confirmation_of.rb
127
+ - test/unit/test_validates_exclusion_of.rb
121
128
  - test/unit/test_validates_format_of.rb
129
+ - test/unit/test_validates_inclusion_of.rb
122
130
  - test/unit/test_validates_length_of.rb
123
131
  - test/unit/test_validates_numericality_of.rb
124
132
  - test/unit/test_validates_presence_of.rb
125
133
  - test/unit/test_validates_true_for.rb
134
+ - test/unit/test_validates_uniqueness_of.rb
126
135
  - test/unit/test_validation_base.rb