validate_email 0.1.2 → 0.1.3

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.
@@ -1,18 +1,21 @@
1
1
  require 'active_model'
2
- require 'active_model/validations'
3
2
  require 'mail'
4
3
 
5
- module Perfectline
6
- module ValidatesEmail
4
+ module ActiveModel
5
+ module Validations
7
6
  class EmailValidator < ActiveModel::EachValidator
7
+
8
8
  def initialize(options)
9
9
  options.reverse_merge!(:message => "is not valid email")
10
10
  super(options)
11
11
  end
12
12
 
13
13
  def validate_each(record, attribute, value)
14
+ return if options[:allow_nil] && value.nil?
15
+
14
16
  begin
15
- mail = Mail::Address.new(value)
17
+ mail = Mail::Address.new(value)
18
+
16
19
  unless mail.address == value && mail.domain.split(".").length > 1
17
20
  record.errors.add(attribute, options[:message])
18
21
  end
@@ -30,5 +33,3 @@ module Perfectline
30
33
  end
31
34
  end
32
35
 
33
- ActiveModel::Validations::HelperMethods.send(:include, Perfectline::ValidatesEmail::ClassMethods)
34
- ActiveModel::Validations::EmailValidator = Perfectline::ValidatesEmail::EmailValidator
@@ -1 +1 @@
1
- require 'validates_email'
1
+ require 'validates_email'
@@ -1,5 +1,3 @@
1
- require 'active_model/validations'
2
-
3
1
  class User
4
2
  include ActiveModel::Validations
5
3
 
@@ -0,0 +1,5 @@
1
+ class UserWithAr < ActiveRecord::Base
2
+ self.table_name = "users"
3
+
4
+ validates :email_address, :email => true
5
+ end
@@ -0,0 +1,5 @@
1
+ class UserWithArLegacy < ActiveRecord::Base
2
+ self.table_name = "users"
3
+
4
+ validates_email :email_address
5
+ end
@@ -1,5 +1,3 @@
1
- require 'active_model/validations'
2
-
3
1
  class UserWithBlank
4
2
  include ActiveModel::Validations
5
3
 
@@ -1,6 +1,4 @@
1
- require 'active_model/validations'
2
-
3
- class UserWithLegacySyntax
1
+ class UserWithLegacy
4
2
  include ActiveModel::Validations
5
3
 
6
4
  attr_accessor :email_address
@@ -1,5 +1,3 @@
1
- require 'active_model/validations'
2
-
3
1
  class UserWithNil
4
2
  include ActiveModel::Validations
5
3
 
@@ -2,11 +2,23 @@ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
2
2
  $LOAD_PATH.unshift(File.dirname(__FILE__) + '/resources')
3
3
  $LOAD_PATH.unshift(File.dirname(__FILE__))
4
4
 
5
- require 'spec'
6
- require 'validates_email'
5
+ require 'rspec'
6
+ require 'sqlite3'
7
+ require 'active_record'
8
+ require 'active_record/base'
9
+ require 'active_record/migration'
7
10
 
8
- autoload :User, 'resources/user'
9
- autoload :UserWithNil, 'resources/user_with_nil'
10
- autoload :UserWithBlank, 'resources/user_with_blank'
11
- autoload :UserWithLegacySyntax, 'resources/user_with_legacy_syntax'
11
+ ActiveRecord::Migration.verbose = false
12
+ ActiveRecord::Base.establish_connection(
13
+ "adapter" => "sqlite3",
14
+ "database" => ":memory"
15
+ )
12
16
 
17
+ require File.join(File.dirname(__FILE__), '..', 'rails', 'init')
18
+
19
+ autoload :User, 'resources/user'
20
+ autoload :UserWithNil, 'resources/user_with_nil'
21
+ autoload :UserWithBlank, 'resources/user_with_blank'
22
+ autoload :UserWithLegacy, 'resources/user_with_legacy'
23
+ autoload :UserWithAr, 'resources/user_with_ar'
24
+ autoload :UserWithArLegacy, 'resources/user_with_ar_legacy'
@@ -1,6 +1,20 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "Enail validation", Perfectline::ValidatesEmail::EmailValidator do
3
+ describe "Email validation" do
4
+
5
+ before(:all) do
6
+ ActiveRecord::Schema.define(:version => 1) do
7
+
8
+ create_table :users, :force => true do |t|
9
+ t.column :email_address, :string
10
+ end
11
+
12
+ end
13
+ end
14
+
15
+ after(:all) do
16
+ ActiveRecord::Base.connection.drop_table(:users)
17
+ end
4
18
 
5
19
  context "with regular validator" do
6
20
  before do
@@ -87,7 +101,7 @@ describe "Enail validation", Perfectline::ValidatesEmail::EmailValidator do
87
101
 
88
102
  context "with legacy syntax" do
89
103
  before do
90
- @user = UserWithLegacySyntax.new
104
+ @user = UserWithLegacy.new
91
105
  end
92
106
 
93
107
  it "should allow nil as email" do
@@ -111,4 +125,26 @@ describe "Enail validation", Perfectline::ValidatesEmail::EmailValidator do
111
125
  end
112
126
  end
113
127
 
128
+ context "with ActiveRecord" do
129
+ before do
130
+ @user = UserWithAr.new
131
+ end
132
+
133
+ it "should not allow invalid email" do
134
+ @user.email_address = ""
135
+ @user.should_not be_valid
136
+ end
137
+ end
138
+
139
+ context "with ActiveRecord and legacy syntax" do
140
+ before do
141
+ @user = UserWithArLegacy.new
142
+ end
143
+
144
+ it "should not allow invalid email" do
145
+ @user.email_address = ""
146
+ @user.should_not be_valid
147
+ end
148
+ end
149
+
114
150
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 2
9
- version: 0.1.2
8
+ - 3
9
+ version: 0.1.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - Tanel Suurhans
@@ -22,6 +22,7 @@ dependencies:
22
22
  name: rspec
23
23
  prerelease: false
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
25
26
  requirements:
26
27
  - - ">="
27
28
  - !ruby/object:Gem::Version
@@ -34,6 +35,7 @@ dependencies:
34
35
  name: diff-lcs
35
36
  prerelease: false
36
37
  requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
37
39
  requirements:
38
40
  - - ">="
39
41
  - !ruby/object:Gem::Version
@@ -45,9 +47,38 @@ dependencies:
45
47
  type: :development
46
48
  version_requirements: *id002
47
49
  - !ruby/object:Gem::Dependency
48
- name: mail
50
+ name: active_record
49
51
  prerelease: false
50
52
  requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ segments:
58
+ - 3
59
+ - 0
60
+ - 0
61
+ version: 3.0.0
62
+ type: :development
63
+ version_requirements: *id003
64
+ - !ruby/object:Gem::Dependency
65
+ name: sqlite3-ruby
66
+ prerelease: false
67
+ requirement: &id004 !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ segments:
73
+ - 0
74
+ version: "0"
75
+ type: :development
76
+ version_requirements: *id004
77
+ - !ruby/object:Gem::Dependency
78
+ name: mail
79
+ prerelease: false
80
+ requirement: &id005 !ruby/object:Gem::Requirement
81
+ none: false
51
82
  requirements:
52
83
  - - ">="
53
84
  - !ruby/object:Gem::Version
@@ -57,11 +88,12 @@ dependencies:
57
88
  - 5
58
89
  version: 2.2.5
59
90
  type: :runtime
60
- version_requirements: *id003
91
+ version_requirements: *id005
61
92
  - !ruby/object:Gem::Dependency
62
93
  name: activemodel
63
94
  prerelease: false
64
- requirement: &id004 !ruby/object:Gem::Requirement
95
+ requirement: &id006 !ruby/object:Gem::Requirement
96
+ none: false
65
97
  requirements:
66
98
  - - ">="
67
99
  - !ruby/object:Gem::Version
@@ -70,7 +102,7 @@ dependencies:
70
102
  - 0
71
103
  version: "3.0"
72
104
  type: :runtime
73
- version_requirements: *id004
105
+ version_requirements: *id006
74
106
  description: Library for validating email addresses in Rails 3 models.
75
107
  email:
76
108
  - tanel.suurhans@perfectline.ee
@@ -86,6 +118,14 @@ files:
86
118
  - install.rb
87
119
  - lib/validates_email.rb
88
120
  - rails/init.rb
121
+ - spec/resources/user_with_blank.rb
122
+ - spec/resources/user_with_nil.rb
123
+ - spec/resources/user_with_ar.rb
124
+ - spec/resources/user_with_ar_legacy.rb
125
+ - spec/resources/user_with_legacy.rb
126
+ - spec/resources/user.rb
127
+ - spec/validates_email_spec.rb
128
+ - spec/spec_helper.rb
89
129
  has_rdoc: true
90
130
  homepage: http://github.com/perfectline/validates_email/tree/master
91
131
  licenses: []
@@ -96,6 +136,7 @@ rdoc_options:
96
136
  require_paths:
97
137
  - lib
98
138
  required_ruby_version: !ruby/object:Gem::Requirement
139
+ none: false
99
140
  requirements:
100
141
  - - ">="
101
142
  - !ruby/object:Gem::Version
@@ -103,6 +144,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
103
144
  - 0
104
145
  version: "0"
105
146
  required_rubygems_version: !ruby/object:Gem::Requirement
147
+ none: false
106
148
  requirements:
107
149
  - - ">="
108
150
  - !ruby/object:Gem::Version
@@ -112,14 +154,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
154
  requirements: []
113
155
 
114
156
  rubyforge_project:
115
- rubygems_version: 1.3.6
157
+ rubygems_version: 1.3.7
116
158
  signing_key:
117
159
  specification_version: 3
118
160
  summary: Library for validating email addresses in Rails 3 models.
119
161
  test_files:
120
- - spec/resources/user.rb
121
162
  - spec/resources/user_with_blank.rb
122
- - spec/resources/user_with_legacy_syntax.rb
123
163
  - spec/resources/user_with_nil.rb
124
- - spec/spec_helper.rb
164
+ - spec/resources/user_with_ar.rb
165
+ - spec/resources/user_with_ar_legacy.rb
166
+ - spec/resources/user_with_legacy.rb
167
+ - spec/resources/user.rb
125
168
  - spec/validates_email_spec.rb
169
+ - spec/spec_helper.rb