validate_email 0.1.2 → 0.1.3

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