diff --git a/app/interactions/domains/force_delete_email/base.rb b/app/interactions/domains/force_delete_email/base.rb index f2ac9b5f2..291dcd136 100644 --- a/app/interactions/domains/force_delete_email/base.rb +++ b/app/interactions/domains/force_delete_email/base.rb @@ -11,11 +11,21 @@ module Domains domains = domain_contacts.map(&:domain).flatten + Domain.where(registrant_id: registrant_ids) - domains.each { |domain| process_force_delete(domain) unless domain.force_delete_scheduled? } + domains.each do |domain| + before_execute_force_delete(domain) + end end private + def before_execute_force_delete(domain) + if domain.force_delete_scheduled? && !domain.status_notes[DomainStatus::FORCE_DELETE].nil? + added_additional_email_into_notes(domain) + else + process_force_delete(domain) + end + end + def process_force_delete(domain) domain.schedule_force_delete(type: :soft, notify_by_email: true, @@ -24,6 +34,13 @@ module Domains save_status_note(domain) end + def added_additional_email_into_notes(domain) + return if domain.status_notes[DomainStatus::FORCE_DELETE].include? email + + domain.status_notes[DomainStatus::FORCE_DELETE].concat(' ' + email) + domain.save(validate: false) + end + def save_status_note(domain) domain.status_notes[DomainStatus::FORCE_DELETE] = email domain.save(validate: false) diff --git a/test/models/domain/force_delete_test.rb b/test/models/domain/force_delete_test.rb index 3323e98a3..1ee0bc77e 100644 --- a/test/models/domain/force_delete_test.rb +++ b/test/models/domain/force_delete_test.rb @@ -385,6 +385,37 @@ class ForceDeleteTest < ActionMailer::TestCase assert notification.text.include? asserted_text end + def test_domain_should_have_several_bounced_emails + @domain.update(valid_to: Time.zone.parse('2012-08-05')) + assert_not @domain.force_delete_scheduled? + travel_to Time.zone.parse('2010-07-05') + email_one = 'one@strangesentence@internet.ee' + email_two = 'two@strangesentence@internet.ee' + asserted_text_one = "Invalid email: #{email_one}" + asserted_text_two = "Invalid email: #{email_two}" + + contact_one = @domain.admin_contacts.first + contact_one.update_attribute(:email, email_one) + contact_one.email_verification.verify + + assert contact_one.email_verification_failed? + + contact_two = @domain.admin_contacts.first + contact_two.update_attribute(:email, email_two) + contact_two.email_verification.verify + + assert contact_one.email_verification_failed? + + @domain.reload + + assert @domain.force_delete_scheduled? + assert_equal 'invalid_email', @domain.template_name + assert_equal Date.parse('2010-09-19'), @domain.force_delete_date.to_date + assert_equal Date.parse('2010-08-05'), @domain.force_delete_start.to_date + assert @domain.status_notes[DomainStatus::FORCE_DELETE].include? email_one + assert @domain.status_notes[DomainStatus::FORCE_DELETE].include? email_two + end + def test_lifts_force_delete_if_contact_fixed @domain.update(valid_to: Time.zone.parse('2012-08-05')) assert_not @domain.force_delete_scheduled?