valid8ors 0.0.9 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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