valid8ors 0.0.9 → 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.
data/README.md CHANGED
@@ -14,79 +14,75 @@ Then run:
14
14
 
15
15
  ## Blacklist Validator
16
16
 
17
- ### Usage
17
+ Check that an attribute doesn't contain blacklisted values.
18
18
 
19
- Add the following to one of your models:
19
+ ### Usage
20
20
 
21
- validates :name, blacklist: true
21
+ ```ruby
22
+ class User < ActiveRecord::Base
23
+ validates :name, blacklist: true
24
+ end
25
+ ```
22
26
 
23
27
  ### Blacklist file
24
28
 
25
29
  You can create a blacklist.yml file in the config directory of your Rails application if you need to overload the one used by this gem.
26
30
 
27
- ### I18n
28
-
29
- If you use I18n, the default key to translate is :blacklisted. So if you add to your User model:
31
+ ### I18n error message
30
32
 
31
- validates :name, blacklist: true
33
+ Key to translate: **:blacklisted**.
34
+ Hence, considering the example above, the translation path would be:
32
35
 
33
- You can translate (or overload) the default message via for e.g. using activerecord (in english): "en.activerecord.errors.models.user.attributes.name.blacklisted"
34
-
35
- ### Tests
36
-
37
- cd test
38
- ruby blacklist_test.rb
36
+ en.activerecord.errors.models.user.attributes.name.blacklisted
39
37
 
40
38
  ## Reserved Validator
41
39
 
42
- ### Usage
40
+ Validate an attribute against a reserved list of values.
43
41
 
44
- Add the following to one of your models:
42
+ ### Usage
45
43
 
46
- validates :name, reserved: true
44
+ ```ruby
45
+ class User < ActiveRecord::Base
46
+ validates :name, reserved: true
47
+ end
48
+ ```
47
49
 
48
50
  ### Reserved file
49
51
 
50
52
  You can create a reserved.yml file in the config directory of your Rails application if you need to overload the one used by this gem.
51
53
 
52
- ### I18n
53
-
54
- If you use I18n, the default key to translate is :reserved. So if you add to your User model:
55
-
56
- validates :name, reserved: true
54
+ ### I18n error message
57
55
 
58
- You can translate (or overload) the default message via for e.g. using activerecord (in english): "en.activerecord.errors.models.user.attributes.name.reserved"
56
+ Key to translate: **:reserved**.
57
+ Hence, considering the example above, the translation path would be:
59
58
 
60
- ### Tests
61
-
62
- cd test
63
- ruby reserved_test.rb
59
+ en.activerecord.errors.models.user.attributes.name.reserved
64
60
 
65
61
  ## Email Format Validator
66
62
 
67
63
  ### Usage
68
64
 
69
- Add the following to one of your models:
70
-
71
- validates :email, email_format: true
72
-
73
- Restrict your validation to accept emails from specific domains only:
65
+ ```ruby
66
+ class User < ActiveRecord::Base
67
+ validates :email, email_format: true
68
+ end
69
+ ```
74
70
 
75
- validates :email, email_format: { domains: ['gmail.com', 'live.com'] }
71
+ Restrict your validation to specific domains:
76
72
 
77
- ### I18n
73
+ ```ruby
74
+ class User < ActiveRecord::Base
75
+ validates :email, email_format: { domains: ['gmail.com', 'live.com'] }
76
+ end
77
+ ```
78
78
 
79
- Default keys to translate are :improperly_formatted (when not an email format) and :invalid_domain (when email domain not listed in "domains" option).
80
- So if you add to your User model:
79
+ ### I18n error messages
81
80
 
82
- validates :email, email_format: true
81
+ Keys to translate: **:improperly_formatted** (when not an email format) and **:invalid_domain** (when email domain not listed in "domains" option).
82
+ Hence, considering the two examples above, translation paths would be:
83
83
 
84
- You can translate (or overload) the default message via for e.g. (in english): "en.activerecord.errors.models.user.attributes.email.improperly_formatted"
85
-
86
- ### Tests
87
-
88
- cd test
89
- ruby email_format_test.rb
84
+ en.activerecord.errors.models.user.attributes.email.improperly_formatted
85
+ en.activerecord.errors.models.user.attributes.email.invalid_domain
90
86
 
91
87
  ### Credits
92
88
 
@@ -96,22 +92,18 @@ Regular Expression tests based on [Comparing E-mail Address Validating Regular E
96
92
 
97
93
  ### Usage
98
94
 
99
- Add the following to one of your models:
100
-
101
- validates :url, url_format: true
102
-
103
- ### I18n
104
-
105
- If you use I18n, the default key to translate is :improperly_formatted. So if you add to your User model:
106
-
107
- validates :url, url_format: true
95
+ ```ruby
96
+ class User < ActiveRecord::Base
97
+ validates :url, url_format: true
98
+ end
99
+ ```
108
100
 
109
- You can translate (or overload) the default message via for e.g. (in english): "en.activerecord.errors.models.user.attributes.url.improperly_formatted"
101
+ ### I18n error message
110
102
 
111
- ### Tests
103
+ Key to translate: **:improperly_formatted**.
104
+ Hence, considering the example above, the translation path would be:
112
105
 
113
- cd test
114
- ruby url_format_test.rb
106
+ en.activerecord.errors.models.user.attributes.url.improperly_formatted
115
107
 
116
108
  ## Password Strength Validator
117
109
 
@@ -120,23 +112,44 @@ Password length validation is not included here as you can use Rails' builtin "L
120
112
 
121
113
  ### Usage
122
114
 
123
- Add the following to one of your models:
115
+ ```ruby
116
+ class User < ActiveRecord::Base
117
+ validates :password, password_strength: true
118
+ end
119
+ ```
124
120
 
125
- validates :password, password_strength: true
121
+ ### I18n error message
122
+
123
+ Key to translate: **:insecure**.
124
+ Hence, considering the example above, the translation path would be:
125
+
126
+ en.activerecord.errors.models.user.attributes.password.insecure
127
+
128
+ ## Absence Validator
129
+
130
+ By default, checks if an attribute is nil. Use allow_blank option to accept empty objects.
131
+
132
+ ### Usage
126
133
 
127
- ### I18n
134
+ ```ruby
135
+ class User < ActiveRecord::Base
136
+ validates :name, absence: true # Validate name is nil
137
+ validates :email, absence: { allow_blank: true } # Validate email is blank
138
+ end
139
+ ```
128
140
 
129
- The default key to translate is :insecure. So if you add to your User model:
141
+ ### I18n error message
130
142
 
131
- validates :password, password_strength: true
143
+ Key to translate: **:not_absent**.
144
+ Hence, considering the example above, translation paths would be:
132
145
 
133
- You can translate (or overload) the default message via for e.g. (in english): "en.activerecord.errors.models.user.attributes.password.insecure"
146
+ en.activerecord.errors.models.user.attributes.name.not_absent
147
+ en.activerecord.errors.models.user.attributes.email.not_absent
134
148
 
135
- ### Tests
149
+ ## Tests
136
150
 
137
- cd test
138
- ruby password_strength_test.rb
151
+ rake test
139
152
 
140
153
  ## Compatibility
141
154
 
142
- Ruby 1.8 is not supported.
155
+ Ruby version >= 1.9.x
data/Rakefile CHANGED
@@ -1 +1,7 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.libs = ["lib"]
6
+ t.test_files = FileList['test/**/*_test.rb']
7
+ end
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ class AbsenceValidator < ActiveModel::EachValidator
4
+
5
+ def validate_each(record, attribute, value)
6
+ condition = options[:allow_blank?] ? :blank? : :nil?
7
+ record.errors.add(attribute, invalid_message(record, attribute)) unless value.send(condition)
8
+ end
9
+
10
+ #######################
11
+ ### Private methods ###
12
+ #######################
13
+
14
+ private
15
+
16
+ def invalid_message(record, attribute)
17
+ I18n.t :not_absent,
18
+ scope: "#{record.class.i18n_scope}.errors.models.#{record.class.model_name.i18n_key}.attributes.#{attribute}",
19
+ default: "is present when it should be absent"
20
+ end
21
+
22
+ end
23
+
data/lib/valid8ors.rb CHANGED
@@ -5,3 +5,4 @@ require 'valid8ors/blacklist'
5
5
  require 'valid8ors/reserved'
6
6
  require 'valid8ors/url_format'
7
7
  require 'valid8ors/password_strength'
8
+ require 'valid8ors/absence'
@@ -0,0 +1,39 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require_relative 'test_helper'
4
+
5
+ class TestAbsenceValidator < MiniTest::Unit::TestCase
6
+
7
+ class User < TestModel
8
+ validates :name, absence: true
9
+ end
10
+
11
+ class OtherUser < TestModel
12
+ validates :name, absence: { allow_blank: true }
13
+ end
14
+
15
+ def test_when_name_absent
16
+ user = User.new
17
+ assert user.valid?
18
+ end
19
+
20
+ def test_when_name_present_or_blank
21
+ ["", "James"].each do |name|
22
+ user = User.new(name: name)
23
+ refute user.valid?
24
+ assert user.errors[:name]
25
+ end
26
+ end
27
+
28
+ def test_when_allow_blank
29
+ other_user = OtherUser.new(name: "")
30
+ assert other_user.valid?
31
+ end
32
+
33
+ def test_default_message_on_error
34
+ user = User.new(name: "James")
35
+ refute user.valid?
36
+ assert user.errors[:name].include?("is present when it should be absent")
37
+ end
38
+
39
+ end
@@ -2,28 +2,28 @@
2
2
 
3
3
  require_relative 'test_helper'
4
4
 
5
- class TestUser < TestModel
6
- validates :name, blacklist: true
7
- end
8
-
9
5
  class TestBlacklistValidator < MiniTest::Unit::TestCase
10
6
 
7
+ class User < TestModel
8
+ validates :name, blacklist: true
9
+ end
10
+
11
11
  def test_some_blacklisted_words
12
12
  names_that_should_be_blacklisted.each do |name|
13
- test_user = TestUser.new(name: name)
14
- refute test_user.valid?
15
- assert test_user.errors[:name]
13
+ user = User.new(name: name)
14
+ refute user.valid?
15
+ assert user.errors[:name]
16
16
  end
17
17
  end
18
18
 
19
19
  def test_some_whitelisted_words
20
- names_that_should_be_whitelisted.each { |name| assert TestUser.new(name: name).valid? }
20
+ names_that_should_be_whitelisted.each { |name| assert User.new(name: name).valid? }
21
21
  end
22
22
 
23
23
  def test_default_message_on_error
24
- test_user = TestUser.new(name: "Get up, fuck up")
25
- refute test_user.valid?
26
- assert test_user.errors[:name].include?("is blacklisted")
24
+ user = User.new(name: "Get up, fuck up")
25
+ refute user.valid?
26
+ assert user.errors[:name].include?("is blacklisted")
27
27
  end
28
28
 
29
29
  #######################
@@ -2,30 +2,30 @@
2
2
 
3
3
  require_relative 'test_helper'
4
4
 
5
- class TestUser < TestModel
6
- validates :email, email_format: true
7
- end
5
+ class TestEmailFormatValidator < MiniTest::Unit::TestCase
8
6
 
9
- class TestUserWithEmailDomains < TestModel
10
- validates :email, email_format: { domains: ['mail.com', 'subdomain.mail.com'] }
11
- end
7
+ class User < TestModel
8
+ validates :email, email_format: true
9
+ end
12
10
 
13
- class TestUserAllowsNilEmailToTrue < TestModel
14
- validates :email, email_format: { allow_nil: true }
15
- end
11
+ class UserWithEmailDomains < TestModel
12
+ validates :email, email_format: { domains: ['mail.com', 'subdomain.mail.com'] }
13
+ end
16
14
 
17
- class TestUserAllowsNilEmailToFalse < TestModel
18
- validates :email, email_format: { allow_nil: false }
19
- end
15
+ class UserAllowsNilEmailToTrue < TestModel
16
+ validates :email, email_format: { allow_nil: true }
17
+ end
20
18
 
21
- class TestEmailFormatValidator < MiniTest::Unit::TestCase
19
+ class UserAllowsNilEmailToFalse < TestModel
20
+ validates :email, email_format: { allow_nil: false }
21
+ end
22
22
 
23
23
  def test_valid_emails
24
- valid_emails.each { |email| assert TestUser.new(email: email).valid? }
24
+ valid_emails.each { |email| assert User.new(email: email).valid? }
25
25
  end
26
26
 
27
27
  def test_invalid_emails
28
- invalid_emails.each { |email| refute TestUser.new(email: email).valid? }
28
+ invalid_emails.each { |email| refute User.new(email: email).valid? }
29
29
  end
30
30
 
31
31
  def test_email_when_domains_option
@@ -33,36 +33,36 @@ class TestEmailFormatValidator < MiniTest::Unit::TestCase
33
33
  valid_emails_with_incorrect_domains = ['user@gmail.com', 'user@subdomain.gmail.com']
34
34
 
35
35
  valid_emails_with_correct_domains.each do |email|
36
- assert TestUserWithEmailDomains.new(email: email).valid?
36
+ assert UserWithEmailDomains.new(email: email).valid?
37
37
  end
38
38
 
39
39
  valid_emails_with_incorrect_domains.each do |email|
40
- refute TestUserWithEmailDomains.new(email: email).valid?
40
+ refute UserWithEmailDomains.new(email: email).valid?
41
41
  end
42
42
  end
43
43
 
44
44
  def test_default_invalid_domain_message_on_error
45
- test_user = TestUserWithEmailDomains.new(email: "user@gmail.com")
46
- refute test_user.valid?
47
- assert test_user.errors[:email].include?("can't be from this domain")
45
+ user = UserWithEmailDomains.new(email: "user@gmail.com")
46
+ refute user.valid?
47
+ assert user.errors[:email].include?("can't be from this domain")
48
48
  end
49
49
 
50
50
  def test_default_message_on_error
51
- test_user = TestUser.new(email: "invalid_email@")
52
- refute test_user.valid?
53
- assert test_user.errors[:email].include?("is improperly formatted")
51
+ user = User.new(email: "invalid_email@")
52
+ refute user.valid?
53
+ assert user.errors[:email].include?("is improperly formatted")
54
54
  end
55
55
 
56
56
  def test_nil_email_when_allow_nil_option_is_not_set
57
- refute TestUser.new(email: nil).valid?
57
+ refute User.new(email: nil).valid?
58
58
  end
59
59
 
60
60
  def test_nil_email_when_allow_nil_option_is_set_to_true
61
- assert TestUserAllowsNilEmailToTrue.new(email: nil).valid?
61
+ assert UserAllowsNilEmailToTrue.new(email: nil).valid?
62
62
  end
63
63
 
64
64
  def test_nil_email_when_allow_nil_option_is_set_to_false
65
- refute TestUserAllowsNilEmailToFalse.new(email: nil).valid?
65
+ refute UserAllowsNilEmailToFalse.new(email: nil).valid?
66
66
  end
67
67
 
68
68
  #######################
@@ -2,44 +2,44 @@
2
2
 
3
3
  require_relative 'test_helper'
4
4
 
5
- class TestUser < TestModel
6
- validates :password, password_strength: true
7
- end
5
+ class TestPasswordFormatValidator < MiniTest::Unit::TestCase
8
6
 
9
- class TestUserAllowsNilPasswordToTrue < TestModel
10
- validates :password, password_strength: { allow_nil: true }
11
- end
7
+ class User < TestModel
8
+ validates :password, password_strength: true
9
+ end
12
10
 
13
- class TestUserAllowsNilPasswordToFalse < TestModel
14
- validates :password, password_strength: { allow_nil: false }
15
- end
11
+ class UserAllowsNilPasswordToTrue < TestModel
12
+ validates :password, password_strength: { allow_nil: true }
13
+ end
16
14
 
17
- class TestPasswordFormatValidator < MiniTest::Unit::TestCase
15
+ class UserAllowsNilPasswordToFalse < TestModel
16
+ validates :password, password_strength: { allow_nil: false }
17
+ end
18
18
 
19
19
  def test_valid_passwords
20
- valid_passwords.each { |password| assert TestUser.new(password: password).valid? }
20
+ valid_passwords.each { |password| assert User.new(password: password).valid? }
21
21
  end
22
22
 
23
23
  def test_invalid_passwords
24
- invalid_passwords.each { |password| refute TestUser.new(password: password).valid? }
24
+ invalid_passwords.each { |password| refute User.new(password: password).valid? }
25
25
  end
26
26
 
27
27
  def test_default_message_on_error
28
- test_user = TestUser.new(password: "invalid_password")
29
- refute test_user.valid?
30
- assert test_user.errors[:password].include?("is not strong enough. It should contain at least a digit, lowercase and uppercase letter.")
28
+ user = User.new(password: "invalid_password")
29
+ refute user.valid?
30
+ assert user.errors[:password].include?("is not strong enough. It should contain at least a digit, lowercase and uppercase letter.")
31
31
  end
32
32
 
33
33
  def test_nil_password_when_allow_nil_option_is_not_set
34
- refute TestUser.new(password: nil).valid?
34
+ refute User.new(password: nil).valid?
35
35
  end
36
36
 
37
37
  def test_nil_password_when_allow_nil_option_is_set_to_true
38
- assert TestUserAllowsNilPasswordToTrue.new(password: nil).valid?
38
+ assert UserAllowsNilPasswordToTrue.new(password: nil).valid?
39
39
  end
40
40
 
41
41
  def test_nil_password_when_allow_nil_option_is_set_to_false
42
- refute TestUserAllowsNilPasswordToFalse.new(password: nil).valid?
42
+ refute UserAllowsNilPasswordToFalse.new(password: nil).valid?
43
43
  end
44
44
 
45
45
  #######################
@@ -2,33 +2,33 @@
2
2
 
3
3
  require_relative 'test_helper'
4
4
 
5
- class TestUser < TestModel
6
- validates :name, reserved: true
7
- end
8
-
9
5
  class TestReservedValidator < MiniTest::Unit::TestCase
10
6
 
7
+ class User < TestModel
8
+ validates :name, reserved: true
9
+ end
10
+
11
11
  def test_some_reserved_words
12
12
  names_that_should_be_reserved.each do |name|
13
- test_user = TestUser.new(name: name)
14
- refute test_user.valid?
15
- assert test_user.errors[:name]
13
+ user = User.new(name: name)
14
+ refute user.valid?
15
+ assert user.errors[:name]
16
16
  end
17
17
  end
18
18
 
19
19
  def test_some_not_reserved_words
20
- names_that_should_be_not_reserved.each { |name| assert TestUser.new(name: name).valid? }
20
+ names_that_should_be_not_reserved.each { |name| assert User.new(name: name).valid? }
21
21
  end
22
22
 
23
23
  def test_with_nil_attribute
24
- test_user = TestUser.new(name: nil)
25
- assert test_user.valid?
24
+ user = User.new(name: nil)
25
+ assert user.valid?
26
26
  end
27
27
 
28
28
  def test_default_message_on_error
29
- test_user = TestUser.new(name: "abOUt")
30
- refute test_user.valid?
31
- assert test_user.errors[:name].include?("is reserved")
29
+ user = User.new(name: "abOUt")
30
+ refute user.valid?
31
+ assert user.errors[:name].include?("is reserved")
32
32
  end
33
33
 
34
34
  #######################
data/test/test_helper.rb CHANGED
@@ -1,12 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
- require 'rubygems'
4
3
  require 'active_model'
5
4
  require 'minitest/autorun'
6
-
7
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
8
- $LOAD_PATH.unshift(File.dirname(__FILE__))
9
-
10
5
  require 'valid8ors'
11
6
 
12
7
  class TestModel
@@ -2,44 +2,44 @@
2
2
 
3
3
  require_relative 'test_helper'
4
4
 
5
- class TestSite < TestModel
6
- validates :url, url_format: true
7
- end
5
+ class TestUrlFormatValidator < MiniTest::Unit::TestCase
8
6
 
9
- class TestSiteAllowsNilToTrue < TestModel
10
- validates :url, url_format: { allow_nil: true }
11
- end
7
+ class Site < TestModel
8
+ validates :url, url_format: true
9
+ end
12
10
 
13
- class TestSiteAllowsNilToFalse < TestModel
14
- validates :url, url_format: { allow_nil: false }
15
- end
11
+ class SiteAllowsNilToTrue < TestModel
12
+ validates :url, url_format: { allow_nil: true }
13
+ end
16
14
 
17
- class TestUrlFormatValidator < MiniTest::Unit::TestCase
15
+ class SiteAllowsNilToFalse < TestModel
16
+ validates :url, url_format: { allow_nil: false }
17
+ end
18
18
 
19
19
  def test_valid_url
20
- valid_urls.each { |url| assert TestSite.new(url: url).valid? }
20
+ valid_urls.each { |url| assert Site.new(url: url).valid? }
21
21
  end
22
22
 
23
23
  def test_invalid_url
24
- invalid_urls.each { |url| refute TestSite.new(url: url).valid? }
24
+ invalid_urls.each { |url| refute Site.new(url: url).valid? }
25
25
  end
26
26
 
27
27
  def test_default_message_on_error
28
- test_site = TestSite.new(url: "invalid_url")
29
- refute test_site.valid?
30
- assert test_site.errors[:url].include?("is improperly formatted")
28
+ site = Site.new(url: "invalid_url")
29
+ refute site.valid?
30
+ assert site.errors[:url].include?("is improperly formatted")
31
31
  end
32
32
 
33
33
  def test_nil_url_when_allow_nil_option_is_not_set
34
- refute TestSite.new(url: nil).valid?
34
+ refute Site.new(url: nil).valid?
35
35
  end
36
36
 
37
37
  def test_nil_url_when_allow_nil_option_is_set_to_true
38
- assert TestSiteAllowsNilToTrue.new(url: nil).valid?
38
+ assert SiteAllowsNilToTrue.new(url: nil).valid?
39
39
  end
40
40
 
41
41
  def test_nil_url_when_allow_nil_option_is_set_to_false
42
- refute TestSiteAllowsNilToFalse.new(url: nil).valid?
42
+ refute SiteAllowsNilToFalse.new(url: nil).valid?
43
43
  end
44
44
 
45
45
  #######################
data/valid8ors.gemspec CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "valid8ors"
6
- s.version = "0.0.9"
6
+ s.version = "0.1.0"
7
7
  s.authors = ["Axel Vergult", "Vincent Pochet", "Ben Colon"]
8
8
  s.email = ["axel@official.fm", "vincent@official.fm", "ben@official.fm"]
9
9
  s.homepage = ""
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: valid8ors
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-07-09 00:00:00.000000000Z
14
+ date: 2012-10-12 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activemodel
18
- requirement: &70223479086520 !ruby/object:Gem::Requirement
18
+ requirement: !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
@@ -23,7 +23,12 @@ dependencies:
23
23
  version: '0'
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *70223479086520
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - ! '>='
30
+ - !ruby/object:Gem::Version
31
+ version: '0'
27
32
  description: Rails 3 awesome custom validators
28
33
  email:
29
34
  - axel@official.fm
@@ -41,11 +46,13 @@ files:
41
46
  - config/blacklist.yml
42
47
  - config/reserved.yml
43
48
  - lib/valid8ors.rb
49
+ - lib/valid8ors/absence.rb
44
50
  - lib/valid8ors/blacklist.rb
45
51
  - lib/valid8ors/email_format.rb
46
52
  - lib/valid8ors/password_strength.rb
47
53
  - lib/valid8ors/reserved.rb
48
54
  - lib/valid8ors/url_format.rb
55
+ - test/absence_test.rb
49
56
  - test/blacklist_test.rb
50
57
  - test/email_format_test.rb
51
58
  - test/password_strength_test.rb
@@ -67,7 +74,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
67
74
  version: '0'
68
75
  segments:
69
76
  - 0
70
- hash: -2283626172012641948
77
+ hash: -557487691873541277
71
78
  required_rubygems_version: !ruby/object:Gem::Requirement
72
79
  none: false
73
80
  requirements:
@@ -76,14 +83,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
76
83
  version: '0'
77
84
  segments:
78
85
  - 0
79
- hash: -2283626172012641948
86
+ hash: -557487691873541277
80
87
  requirements: []
81
88
  rubyforge_project:
82
- rubygems_version: 1.8.10
89
+ rubygems_version: 1.8.24
83
90
  signing_key:
84
91
  specification_version: 3
85
92
  summary: Rails 3 awesome custom validators
86
93
  test_files:
94
+ - test/absence_test.rb
87
95
  - test/blacklist_test.rb
88
96
  - test/email_format_test.rb
89
97
  - test/password_strength_test.rb