activevalidators 1.8.1 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml CHANGED
@@ -5,6 +5,6 @@ rvm:
5
5
  - 1.9.3
6
6
  - ruby-head
7
7
  - ree
8
- - rbx
9
- - rbx-2.0
8
+ - rbx-18mode
9
+ - rbx-19mode
10
10
  - jruby
data/README.md CHANGED
@@ -16,7 +16,7 @@ In your models, the gem provides new validators like `email`, or `url`:
16
16
 
17
17
  ```ruby
18
18
  class User
19
- validates :email_address, :email => true
19
+ validates :email_address, :email => true # == :email => { :strict => false }
20
20
  validates :link_url, :url => true
21
21
  validates :user_phone, :phone => true
22
22
  validates :password, :password => { :strength => :medium }
@@ -1,11 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
- lib = File.expand_path('../lib/', __FILE__)
3
- $:.unshift lib unless $:.include?(lib)
4
- require 'active_validators/version'
5
-
6
2
  Gem::Specification.new do |s|
7
3
  s.name = "activevalidators"
8
- s.version = ActiveValidators::VERSION
4
+ s.version = '1.9.0'
9
5
  s.platform = Gem::Platform::RUBY
10
6
  s.authors = ["Franck Verrot", "Paco Guzmán", "Oriol Gual", "Garrett Bjerkhoel", "Renato Riccieri Santos Zannon", "Brian Moseley"]
11
7
  s.email = ["franck@verrot.fr"]
@@ -22,6 +18,5 @@ Gem::Specification.new do |s|
22
18
 
23
19
  s.files = `git ls-files`.split("\n")
24
20
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
25
- s.require_paths = ["lib"]
26
21
  end
27
22
 
@@ -2,10 +2,20 @@ require 'mail'
2
2
  module ActiveModel
3
3
  module Validations
4
4
  class EmailValidator < EachValidator
5
+ EMAIL_REGEXP = %r{\A[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\z}
6
+
5
7
  def validate_each(record,attribute,value)
8
+ opts = options.dup
9
+ opts[:strict] ||= false
10
+
6
11
  begin
7
12
  address = Mail::Address.new(value)
8
- valid = address.domain && value.include?(address.address)
13
+ valid = address.domain &&
14
+ value.include?(address.address) &&
15
+ (
16
+ !opts[:strict] ||
17
+ address.domain.match(EMAIL_REGEXP)
18
+ )
9
19
  rescue Mail::Field::ParseError
10
20
  valid = false
11
21
  end
@@ -1,42 +1,83 @@
1
1
  require 'test_helper.rb'
2
2
 
3
3
  describe "Email Validation" do
4
- it "accepts valid emails" do
5
- subject = build_email_record :email => 'franck@verrot.fr'
6
- subject.valid?.must_equal true
7
- subject.errors.size.must_equal 0
8
- end
4
+ describe "strict: true" do
5
+
6
+ it "accepts valid emails" do
7
+ subject = build_email_record({:email => 'franck@verrot.fr'}, {:strict => true})
8
+ subject.valid?.must_equal true
9
+ subject.errors.size.must_equal 0
10
+ end
9
11
 
10
- it "accepts complete emails" do
11
- subject = build_email_record :email => 'Mikel Lindsaar (My email address) <mikel@test.lindsaar.net>'
12
- subject.valid?.must_equal true
13
- subject.errors.size.must_equal 0
12
+ it "accepts valid emails" do
13
+ subject = build_email_record({:email => 'franck@edu.verrot-gouv.fr'}, {:strict => true})
14
+ subject.valid?.must_equal true
15
+ subject.errors.size.must_equal 0
16
+ end
17
+
18
+ it "accepts complete emails" do
19
+ subject = build_email_record({:email => 'Mikel Lindsaar (My email address) <mikel@test.lindsaar.net>'}, {:strict => true})
20
+ subject.valid?.must_equal true
21
+ subject.errors.size.must_equal 0
22
+ end
23
+
24
+ it "accepts complete emails" do
25
+ subject = build_email_record({:email => 'franck@verrotfr'}, {:strict => true})
26
+ subject.valid?.must_equal false
27
+ subject.errors.size.must_equal 1
28
+ end
14
29
  end
15
-
30
+
31
+ describe "strict: false (default)" do
32
+ it "accepts valid emails" do
33
+ subject = build_email_record :email => 'franck@verrot.fr'
34
+ subject.valid?.must_equal true
35
+ subject.errors.size.must_equal 0
36
+ end
37
+
38
+ it "accepts valid emails" do
39
+ subject = build_email_record :email => 'franck@edu.verrot-gouv.fr'
40
+ subject.valid?.must_equal true
41
+ subject.errors.size.must_equal 0
42
+ end
43
+
44
+ it "accepts complete emails" do
45
+ subject = build_email_record :email => 'Mikel Lindsaar (My email address) <mikel@test.lindsaar.net>'
46
+ subject.valid?.must_equal true
47
+ subject.errors.size.must_equal 0
48
+ end
49
+
50
+ it "accepts complete emails" do
51
+ subject = build_email_record :email => 'franck@verrotfr'
52
+ subject.valid?.must_equal true
53
+ subject.errors.size.must_equal 0
54
+ end
55
+ end
56
+
16
57
  describe "for invalid emails" do
17
58
  it "rejects invalid emails" do
18
59
  subject = build_email_record :email => 'franck.fr'
19
60
  subject.valid?.must_equal false
20
61
  subject.errors.size.must_equal 1
21
62
  end
22
-
63
+
23
64
  it 'rejects local emails' do
24
65
  subject = build_email_record :email => 'franck.fr'
25
66
  subject.email = 'franck'
26
67
  subject.valid?.must_equal false
27
68
  subject.errors.size.must_equal 1
28
69
  end
29
-
30
- it "generates an error message of type invalid" do
70
+
71
+ it 'generates an error message of type invalid' do
31
72
  subject = build_email_record :email => 'franck.fr'
32
73
  subject.valid?.must_equal false
33
74
  subject.errors[:email].include?(subject.errors.generate_message(:email, :invalid)).must_equal true
34
75
  end
35
76
  end
36
77
 
37
- def build_email_record(attrs = {})
78
+ def build_email_record(attrs = {}, opts = {})
38
79
  TestRecord.reset_callbacks(:validate)
39
- TestRecord.validates :email, :email => true
80
+ TestRecord.validates :email, :email => { :strict => opts[:strict] }
40
81
  TestRecord.new attrs
41
82
  end
42
83
  end
metadata CHANGED
@@ -1,16 +1,12 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: activevalidators
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 1
7
- - 8
8
- - 1
9
- version: 1.8.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.9.0
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Franck Verrot
13
- - "Paco Guzm\xC3\xA1n"
9
+ - Paco Guzmán
14
10
  - Oriol Gual
15
11
  - Garrett Bjerkhoel
16
12
  - Renato Riccieri Santos Zannon
@@ -18,96 +14,81 @@ authors:
18
14
  autorequire:
19
15
  bindir: bin
20
16
  cert_chain: []
21
-
22
- date: 2011-12-17 00:00:00 +01:00
23
- default_executable:
24
- dependencies:
25
- - !ruby/object:Gem::Dependency
17
+ date: 2012-04-07 00:00:00.000000000 Z
18
+ dependencies:
19
+ - !ruby/object:Gem::Dependency
26
20
  name: bundler
27
- prerelease: false
28
- requirement: &id001 !ruby/object:Gem::Requirement
29
- requirements:
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- segments:
33
- - 0
34
- version: "0"
21
+ requirement: &70152419540700 !ruby/object:Gem::Requirement
22
+ none: false
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
35
27
  type: :development
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: minitest
39
28
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- segments:
45
- - 0
46
- version: "0"
29
+ version_requirements: *70152419540700
30
+ - !ruby/object:Gem::Dependency
31
+ name: minitest
32
+ requirement: &70152419540020 !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
47
38
  type: :development
48
- version_requirements: *id002
49
- - !ruby/object:Gem::Dependency
50
- name: rake
51
39
  prerelease: false
52
- requirement: &id003 !ruby/object:Gem::Requirement
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- segments:
57
- - 0
58
- - 8
59
- - 7
40
+ version_requirements: *70152419540020
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: &70152419506560 !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ! '>='
47
+ - !ruby/object:Gem::Version
60
48
  version: 0.8.7
61
49
  type: :runtime
62
- version_requirements: *id003
63
- - !ruby/object:Gem::Dependency
64
- name: activemodel
65
50
  prerelease: false
66
- requirement: &id004 !ruby/object:Gem::Requirement
67
- requirements:
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- segments:
71
- - 3
72
- - 0
73
- - 0
51
+ version_requirements: *70152419506560
52
+ - !ruby/object:Gem::Dependency
53
+ name: activemodel
54
+ requirement: &70152419506060 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ! '>='
58
+ - !ruby/object:Gem::Version
74
59
  version: 3.0.0
75
60
  type: :runtime
76
- version_requirements: *id004
77
- - !ruby/object:Gem::Dependency
78
- name: mail
79
61
  prerelease: false
80
- requirement: &id005 !ruby/object:Gem::Requirement
81
- requirements:
82
- - - ">="
83
- - !ruby/object:Gem::Version
84
- segments:
85
- - 0
86
- version: "0"
62
+ version_requirements: *70152419506060
63
+ - !ruby/object:Gem::Dependency
64
+ name: mail
65
+ requirement: &70152419505620 !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
87
71
  type: :runtime
88
- version_requirements: *id005
89
- - !ruby/object:Gem::Dependency
90
- name: date_validator
91
72
  prerelease: false
92
- requirement: &id006 !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- segments:
97
- - 0
98
- version: "0"
73
+ version_requirements: *70152419505620
74
+ - !ruby/object:Gem::Dependency
75
+ name: date_validator
76
+ requirement: &70152419504580 !ruby/object:Gem::Requirement
77
+ none: false
78
+ requirements:
79
+ - - ! '>='
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
99
82
  type: :runtime
100
- version_requirements: *id006
83
+ prerelease: false
84
+ version_requirements: *70152419504580
101
85
  description: ActiveValidators is a collection of ActiveModel/ActiveRecord validations
102
- email:
86
+ email:
103
87
  - franck@verrot.fr
104
88
  executables: []
105
-
106
89
  extensions: []
107
-
108
90
  extra_rdoc_files: []
109
-
110
- files:
91
+ files:
111
92
  - .gitignore
112
93
  - .travis.yml
113
94
  - Gemfile
@@ -126,7 +107,6 @@ files:
126
107
  - lib/active_model/validations/tracking_number_validator.rb
127
108
  - lib/active_model/validations/twitter_validator.rb
128
109
  - lib/active_model/validations/url_validator.rb
129
- - lib/active_validators/version.rb
130
110
  - lib/activevalidators.rb
131
111
  - test/test_helper.rb
132
112
  - test/validations/credit_card_test.rb
@@ -141,37 +121,31 @@ files:
141
121
  - test/validations/tracking_number_test.rb
142
122
  - test/validations/twitter_test.rb
143
123
  - test/validations/url_test.rb
144
- has_rdoc: true
145
124
  homepage: http://github.com/cesario/activevalidators
146
125
  licenses: []
147
-
148
126
  post_install_message:
149
127
  rdoc_options: []
150
-
151
- require_paths:
128
+ require_paths:
152
129
  - lib
153
- required_ruby_version: !ruby/object:Gem::Requirement
154
- requirements:
155
- - - ">="
156
- - !ruby/object:Gem::Version
157
- segments:
158
- - 0
159
- version: "0"
160
- required_rubygems_version: !ruby/object:Gem::Requirement
161
- requirements:
162
- - - ">="
163
- - !ruby/object:Gem::Version
164
- segments:
165
- - 0
166
- version: "0"
130
+ required_ruby_version: !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ! '>='
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ required_rubygems_version: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
167
142
  requirements: []
168
-
169
143
  rubyforge_project:
170
- rubygems_version: 1.3.6
144
+ rubygems_version: 1.8.11
171
145
  signing_key:
172
146
  specification_version: 3
173
147
  summary: Collection of ActiveModel/ActiveRecord validations
174
- test_files:
148
+ test_files:
175
149
  - test/test_helper.rb
176
150
  - test/validations/credit_card_test.rb
177
151
  - test/validations/date_test.rb
@@ -1,4 +0,0 @@
1
- # encoding: utf-8
2
- module ActiveValidators
3
- VERSION = '1.8.1'
4
- end