Merge pull request #1985 from internetee/1913-update-forceDelete-notes-with-additional-invalid-emails

changed method for add additional mails in status notes
This commit is contained in:
Timo Võhmar 2021-05-27 12:52:04 +03:00 committed by GitHub
commit 4a613a80e5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 49 additions and 1 deletions

View file

@ -11,11 +11,21 @@ module Domains
domains = domain_contacts.map(&:domain).flatten + domains = domain_contacts.map(&:domain).flatten +
Domain.where(registrant_id: registrant_ids) 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 end
private 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) def process_force_delete(domain)
domain.schedule_force_delete(type: :soft, domain.schedule_force_delete(type: :soft,
notify_by_email: true, notify_by_email: true,
@ -24,6 +34,13 @@ module Domains
save_status_note(domain) save_status_note(domain)
end 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) def save_status_note(domain)
domain.status_notes[DomainStatus::FORCE_DELETE] = email domain.status_notes[DomainStatus::FORCE_DELETE] = email
domain.save(validate: false) domain.save(validate: false)

View file

@ -385,6 +385,37 @@ class ForceDeleteTest < ActionMailer::TestCase
assert notification.text.include? asserted_text assert notification.text.include? asserted_text
end 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 def test_lifts_force_delete_if_contact_fixed
@domain.update(valid_to: Time.zone.parse('2012-08-05')) @domain.update(valid_to: Time.zone.parse('2012-08-05'))
assert_not @domain.force_delete_scheduled? assert_not @domain.force_delete_scheduled?