Skip to content

Commit bfec899

Browse files
authored
Merge pull request #13 from charles-jan/master
Email validator add custom options support
2 parents ee0af31 + 2abc916 commit bfec899

2 files changed

Lines changed: 20 additions & 3 deletions

File tree

lib/emailable/email_validator.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,12 @@ def validate_each(record, attribute, value)
5151
error ||= :disposable if ev.disposable? && !disposable
5252
error ||= :accept_all if ev.accept_all? && !accept_all
5353

54-
record.errors.add(attribute, error) if error
54+
if error
55+
error_options = options.except(
56+
:smtp, :states, :free, :role, :disposable, :accept_all, :timeout
57+
)
58+
record.errors.add(attribute, error, **error_options)
59+
end
5560
rescue Emailable::Error
5661
# silence errors
5762
end

test/email_validator_test.rb

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class EmailValidatorTest < Minitest::Test
55

66
def user_class(
77
smtp: true, states: %i[deliverable risky unknown], free: true, role: true,
8-
accept_all: true, disposable: true, timeout: 3
8+
accept_all: true, disposable: true, timeout: 3, **options
99
)
1010
Class.new do
1111
include ActiveModel::Model
@@ -15,7 +15,7 @@ def user_class(
1515
smtp: smtp, states: states,
1616
free: free, role: role, disposable: disposable, accept_all: accept_all,
1717
timeout: timeout
18-
}
18+
}.merge(options)
1919

2020
def self.name
2121
'TestClass'
@@ -83,4 +83,16 @@ def test_timeout_option
8383
assert_raises(ArgumentError) { invalid_user2.valid? }
8484
end
8585

86+
def test_custom_option
87+
message = 'invalid message'
88+
invalid_user = user_class(message: message, reportable: true).new(
89+
email: 'undeliverable@example.com'
90+
)
91+
92+
refute invalid_user.valid?
93+
assert invalid_user.errors[:email].present?
94+
assert_equal message, invalid_user.errors[:email].first
95+
assert invalid_user.errors.where(:email, reportable: true).present?
96+
end
97+
8698
end

0 commit comments

Comments
 (0)