mirror of
https://github.com/internetee/registry.git
synced 2025-07-30 06:26:15 +02:00
assign the limit of validation records
This commit is contained in:
parent
83f951b4c8
commit
37c6239b13
2 changed files with 57 additions and 15 deletions
|
@ -11,7 +11,6 @@ module Actions
|
||||||
def call
|
def call
|
||||||
result = check_email(email)
|
result = check_email(email)
|
||||||
save_result(result)
|
save_result(result)
|
||||||
filtering_old_failed_records(result)
|
|
||||||
result.success ? log_success : log_failure(result)
|
result.success ? log_success : log_failure(result)
|
||||||
result.success
|
result.success
|
||||||
end
|
end
|
||||||
|
@ -26,25 +25,25 @@ module Actions
|
||||||
Rails.env.test? && check_level == 'smtp' ? :mx : check_level.to_sym
|
Rails.env.test? && check_level == 'smtp' ? :mx : check_level.to_sym
|
||||||
end
|
end
|
||||||
|
|
||||||
def filtering_old_failed_records(result)
|
def filtering_old_failed_records(result, contact)
|
||||||
if @check_level == "mx" && !result.success && validation_eventable.validation_events.count > 3
|
if @check_level == "mx" && !result.success && contact.validation_events.count > 3
|
||||||
validation_eventable.validation_events.order!(created_at: :asc)
|
contact.validation_events.order!(created_at: :asc)
|
||||||
while validation_eventable.validation_events.count > 3
|
while contact.validation_events.count > 3
|
||||||
validation_eventable.validation_events.first.destroy
|
contact.validation_events.first.destroy
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if @check_level == "mx" && result.success && validation_eventable.validation_events.count > 1
|
if @check_level == "regex" && result.success && contact.validation_events.count > 1
|
||||||
validation_eventable.validation_events.order!(created_at: :asc)
|
contact.validation_events.order!(created_at: :asc)
|
||||||
while validation_eventable.validation_events.count > 1
|
while contact.validation_events.count > 1
|
||||||
validation_eventable.validation_events.first.destroy
|
contact.validation_events.first.destroy
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if @check_level == "smtp" && validation_eventable.validation_events.count > 1
|
if @check_level == "smtp" && contact.validation_events.count > 1
|
||||||
validation_eventable.validation_events.order!(created_at: :asc)
|
contact.validation_events.order!(created_at: :asc)
|
||||||
while validation_eventable.validation_events.count > 1
|
while contact.validation_events.count > 1
|
||||||
validation_eventable.validation_events.first.destroy
|
contact.validation_events.first.destroy
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -64,6 +63,7 @@ module Actions
|
||||||
contacts.find_in_batches(batch_size: 500) do |contact_batches|
|
contacts.find_in_batches(batch_size: 500) do |contact_batches|
|
||||||
contact_batches.each do |contact|
|
contact_batches.each do |contact|
|
||||||
contact.validation_events.create(validation_event_attrs(result))
|
contact.validation_events.create(validation_event_attrs(result))
|
||||||
|
filtering_old_failed_records(result, contact)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
rescue ActiveRecord::RecordNotSaved
|
rescue ActiveRecord::RecordNotSaved
|
||||||
|
|
|
@ -92,7 +92,49 @@ class EmailCheckTest < ActiveSupport::TestCase
|
||||||
action.call
|
action.call
|
||||||
end
|
end
|
||||||
|
|
||||||
assert_equal @contact.validation_events.count, 1
|
assert_equal @contact.validation_events.count, 3
|
||||||
assert @contact.validation_events.last.success
|
assert @contact.validation_events.last.success
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_should_remove_old_record_if_validation_pass_the_limit
|
||||||
|
trumail_results = OpenStruct.new(success: false,
|
||||||
|
email: @contact.email,
|
||||||
|
domain: "box.tests",
|
||||||
|
errors: {:mx=>"target host(s) not found"})
|
||||||
|
|
||||||
|
action = Actions::EmailCheck.new(email: @contact.email,
|
||||||
|
validation_eventable: @contact,
|
||||||
|
check_level: 'mx')
|
||||||
|
|
||||||
|
action.stub :check_email, trumail_results do
|
||||||
|
4.times do
|
||||||
|
action.call
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_equal @contact.validation_events.count, 3
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_should_remove_old_record_if_multiple_contacts_has_the_same_email
|
||||||
|
contact_two = contacts(:william)
|
||||||
|
contact_two.update(email: @contact.email)
|
||||||
|
contact_two.reload
|
||||||
|
trumail_results = OpenStruct.new(success: false,
|
||||||
|
email: @contact.email,
|
||||||
|
domain: "box.tests",
|
||||||
|
errors: {:mx=>"target host(s) not found"})
|
||||||
|
|
||||||
|
action = Actions::EmailCheck.new(email: @contact.email,
|
||||||
|
validation_eventable: @contact,
|
||||||
|
check_level: 'mx')
|
||||||
|
|
||||||
|
action.stub :check_email, trumail_results do
|
||||||
|
4.times do
|
||||||
|
action.call
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_equal @contact.validation_events.count, 3
|
||||||
|
assert_equal contact_two.validation_events.count, 3
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue