From f3612fc1e43a8d66b97ad8ff8d9e9bcd0f47d7ca Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Thu, 15 Apr 2021 14:38:35 +0300 Subject: [PATCH 1/5] Implemented job and test --- app/jobs/bounced_emails_cleaner_job.rb | 10 ++++++++++ test/models/bounced_mail_address_test.rb | 15 +++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 app/jobs/bounced_emails_cleaner_job.rb diff --git a/app/jobs/bounced_emails_cleaner_job.rb b/app/jobs/bounced_emails_cleaner_job.rb new file mode 100644 index 000000000..aa8ccc01e --- /dev/null +++ b/app/jobs/bounced_emails_cleaner_job.rb @@ -0,0 +1,10 @@ +class BouncedEmailsCleanerJob < ApplicationJob + queue_as :default + + def perform + BouncedMailAddress.find_each do |bounce| + count = Contact.where(email: bounce.email).count + bounce.destroy if count == 0 + end + end +end \ No newline at end of file diff --git a/test/models/bounced_mail_address_test.rb b/test/models/bounced_mail_address_test.rb index 2a24c00b0..89ee1dda2 100644 --- a/test/models/bounced_mail_address_test.rb +++ b/test/models/bounced_mail_address_test.rb @@ -16,6 +16,21 @@ class BouncedMailAddressTest < ActiveSupport::TestCase @contact_email = "john@inbox.test" end + def test_remove_bounced_email_after_changed_related_email + @bounced_mail.update(email: @contact_email) + @bounced_mail.save + + contacts_with_bounced_mails = Contact.where(email: @contact_email) + contacts_with_bounced_mails.each do |contact| + contact.email = "sara@inbox.com" + contact.save + end + + BouncedEmailsCleanerJob.perform_now + + assert_nil BouncedMailAddress.find_by(email: @contact_email) + end + def test_soft_force_delete_related_domains domain_contacts = Contact.where(email: @contact_email).map(&:domain_contacts).flatten From f0de396e82457ab6a81c334f25e9ae0406c8e5b6 Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Thu, 15 Apr 2021 14:44:46 +0300 Subject: [PATCH 2/5] refactoring --- app/jobs/bounced_emails_cleaner_job.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/jobs/bounced_emails_cleaner_job.rb b/app/jobs/bounced_emails_cleaner_job.rb index aa8ccc01e..3d69a9d28 100644 --- a/app/jobs/bounced_emails_cleaner_job.rb +++ b/app/jobs/bounced_emails_cleaner_job.rb @@ -4,7 +4,7 @@ class BouncedEmailsCleanerJob < ApplicationJob def perform BouncedMailAddress.find_each do |bounce| count = Contact.where(email: bounce.email).count - bounce.destroy if count == 0 - end + bounce.destroy if count.zero? + end end -end \ No newline at end of file +end From 77b99b3d2ec80f624a478065a93a886a33554763 Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Thu, 15 Apr 2021 14:48:03 +0300 Subject: [PATCH 3/5] refactoring --- app/jobs/bounced_emails_cleaner_job.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/jobs/bounced_emails_cleaner_job.rb b/app/jobs/bounced_emails_cleaner_job.rb index 3d69a9d28..84a43b6fa 100644 --- a/app/jobs/bounced_emails_cleaner_job.rb +++ b/app/jobs/bounced_emails_cleaner_job.rb @@ -3,8 +3,8 @@ class BouncedEmailsCleanerJob < ApplicationJob def perform BouncedMailAddress.find_each do |bounce| - count = Contact.where(email: bounce.email).count - bounce.destroy if count.zero? + count = Contact.where(email: bounce.email).count + bounce.destroy if count.zero? end end end From 649d3559720fca46ae220306b2ac7c57b04634a4 Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Mon, 19 Apr 2021 10:21:30 +0300 Subject: [PATCH 4/5] added logging --- app/jobs/bounced_emails_cleaner_job.rb | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/jobs/bounced_emails_cleaner_job.rb b/app/jobs/bounced_emails_cleaner_job.rb index 84a43b6fa..286f38ae7 100644 --- a/app/jobs/bounced_emails_cleaner_job.rb +++ b/app/jobs/bounced_emails_cleaner_job.rb @@ -4,7 +4,16 @@ class BouncedEmailsCleanerJob < ApplicationJob def perform BouncedMailAddress.find_each do |bounce| count = Contact.where(email: bounce.email).count - bounce.destroy if count.zero? + if count.zero? + logger.info "#{bounce.inspect} ARE DELETED!" + bounce.destroy + end end end + + private + + def logger + @logger ||= Logger.new(Rails.root.join('log', 'deleted_bounced_mails.log')) + end end From 5618875888a75ea132300eca6036bb619b047365 Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Fri, 23 Apr 2021 11:04:46 +0300 Subject: [PATCH 5/5] Changed log to syslog --- app/jobs/bounced_emails_cleaner_job.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/jobs/bounced_emails_cleaner_job.rb b/app/jobs/bounced_emails_cleaner_job.rb index 286f38ae7..c52e4bd6a 100644 --- a/app/jobs/bounced_emails_cleaner_job.rb +++ b/app/jobs/bounced_emails_cleaner_job.rb @@ -14,6 +14,6 @@ class BouncedEmailsCleanerJob < ApplicationJob private def logger - @logger ||= Logger.new(Rails.root.join('log', 'deleted_bounced_mails.log')) + @logger ||= Rails.logger end end