From 2c37e30923a6f4c73c9556bad29a99a5bd2dd744 Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Mon, 17 May 2021 13:35:15 +0300 Subject: [PATCH 1/4] changed method for add additional mails in status notes --- .../clear_force_delete_data.rb | 2 +- .../domains/force_delete_email/base.rb | 18 +++++++++++++++++- .../registrar/contacts/form/_address.haml | 2 +- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/app/interactions/domains/cancel_force_delete/clear_force_delete_data.rb b/app/interactions/domains/cancel_force_delete/clear_force_delete_data.rb index 1e6bcccd9..8fe6dfbb4 100644 --- a/app/interactions/domains/cancel_force_delete/clear_force_delete_data.rb +++ b/app/interactions/domains/cancel_force_delete/clear_force_delete_data.rb @@ -5,7 +5,7 @@ module Domains domain.force_delete_data = nil domain.force_delete_date = nil domain.force_delete_start = nil - domain.status_notes[DomainStatus::FORCE_DELETE] = nil + domain.status_notes[DomainStatus::FORCE_DELETE] = '' domain.save(validate: false) end end diff --git a/app/interactions/domains/force_delete_email/base.rb b/app/interactions/domains/force_delete_email/base.rb index f2ac9b5f2..49976a3f1 100644 --- a/app/interactions/domains/force_delete_email/base.rb +++ b/app/interactions/domains/force_delete_email/base.rb @@ -11,7 +11,13 @@ 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| + if domain.force_delete_scheduled? + added_additional_email_into_notes(domain) + else + process_force_delete(domain) + end + end end private @@ -24,7 +30,17 @@ module Domains save_status_note(domain) end + def added_additional_email_into_notes(domain) + if !domain.status_notes[DomainStatus::FORCE_DELETE].include? email + domain.status_notes[DomainStatus::FORCE_DELETE].concat(" " + email) + domain.save(validate: false) + end + end + def save_status_note(domain) + # puts "Is blank? #{domain.status_notes[DomainStatus::FORCE_DELETE].blank?}" -> true + # puts "Is nil? #{domain.status_notes[DomainStatus::FORCE_DELETE].nil?}" -> true + # puts "Is present? #{domain.status_notes[DomainStatus::FORCE_DELETE].present?}" -> false domain.status_notes[DomainStatus::FORCE_DELETE] = email domain.save(validate: false) end diff --git a/app/views/registrar/contacts/form/_address.haml b/app/views/registrar/contacts/form/_address.haml index 7789c2891..e70d00cd8 100644 --- a/app/views/registrar/contacts/form/_address.haml +++ b/app/views/registrar/contacts/form/_address.haml @@ -31,6 +31,6 @@ = f.label :country_code, t(:country) + '*' .col-md-7 - country_selected = f.object.persisted? ? f.object.country_code : 'EE' - = f.select(:country_code, SApplicationController.helpers.all_country_options(country_selected), + = f.select(:country_code, ApplicationController.helpers.all_country_options(country_selected), { include_blank: true }, required: true) From 6663609550680be9777c3fdf4991a0bf8336cbd2 Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Mon, 17 May 2021 13:44:40 +0300 Subject: [PATCH 2/4] refactoring --- .../domains/cancel_force_delete/clear_force_delete_data.rb | 2 +- app/interactions/domains/force_delete_email/base.rb | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/app/interactions/domains/cancel_force_delete/clear_force_delete_data.rb b/app/interactions/domains/cancel_force_delete/clear_force_delete_data.rb index 8fe6dfbb4..1e6bcccd9 100644 --- a/app/interactions/domains/cancel_force_delete/clear_force_delete_data.rb +++ b/app/interactions/domains/cancel_force_delete/clear_force_delete_data.rb @@ -5,7 +5,7 @@ module Domains domain.force_delete_data = nil domain.force_delete_date = nil domain.force_delete_start = nil - domain.status_notes[DomainStatus::FORCE_DELETE] = '' + domain.status_notes[DomainStatus::FORCE_DELETE] = nil domain.save(validate: false) end end diff --git a/app/interactions/domains/force_delete_email/base.rb b/app/interactions/domains/force_delete_email/base.rb index 49976a3f1..7088be7fa 100644 --- a/app/interactions/domains/force_delete_email/base.rb +++ b/app/interactions/domains/force_delete_email/base.rb @@ -12,7 +12,7 @@ module Domains Domain.where(registrant_id: registrant_ids) domains.each do |domain| - if domain.force_delete_scheduled? + if domain.force_delete_scheduled? && !domain.status_notes[DomainStatus::FORCE_DELETE].nil? added_additional_email_into_notes(domain) else process_force_delete(domain) @@ -38,9 +38,6 @@ module Domains end def save_status_note(domain) - # puts "Is blank? #{domain.status_notes[DomainStatus::FORCE_DELETE].blank?}" -> true - # puts "Is nil? #{domain.status_notes[DomainStatus::FORCE_DELETE].nil?}" -> true - # puts "Is present? #{domain.status_notes[DomainStatus::FORCE_DELETE].present?}" -> false domain.status_notes[DomainStatus::FORCE_DELETE] = email domain.save(validate: false) end From 0ccfd0d8d475b2a83ab3f56bdaf716eb04ecca29 Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Mon, 17 May 2021 14:10:28 +0300 Subject: [PATCH 3/4] added test --- .../domains/force_delete_email/base.rb | 6 ++-- test/models/domain/force_delete_test.rb | 33 +++++++++++++++++++ 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/app/interactions/domains/force_delete_email/base.rb b/app/interactions/domains/force_delete_email/base.rb index 7088be7fa..af048d48f 100644 --- a/app/interactions/domains/force_delete_email/base.rb +++ b/app/interactions/domains/force_delete_email/base.rb @@ -11,7 +11,7 @@ module Domains domains = domain_contacts.map(&:domain).flatten + Domain.where(registrant_id: registrant_ids) - domains.each do |domain| + domains.each do |domain| if domain.force_delete_scheduled? && !domain.status_notes[DomainStatus::FORCE_DELETE].nil? added_additional_email_into_notes(domain) else @@ -31,8 +31,8 @@ module Domains end def added_additional_email_into_notes(domain) - if !domain.status_notes[DomainStatus::FORCE_DELETE].include? email - domain.status_notes[DomainStatus::FORCE_DELETE].concat(" " + email) + unless domain.status_notes[DomainStatus::FORCE_DELETE].include? email + domain.status_notes[DomainStatus::FORCE_DELETE].concat(' ' + email) domain.save(validate: false) end end diff --git a/test/models/domain/force_delete_test.rb b/test/models/domain/force_delete_test.rb index 3323e98a3..246a029cf 100644 --- a/test/models/domain/force_delete_test.rb +++ b/test/models/domain/force_delete_test.rb @@ -385,6 +385,39 @@ 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 + notification = @domain.registrar.notifications.last + assert notification.text.include? asserted_text + 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? From 4a8bdc14a18c91294d12fca89d1ed9a1ed9eee5f Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Mon, 17 May 2021 14:30:58 +0300 Subject: [PATCH 4/4] refactoring --- .../domains/force_delete_email/base.rb | 22 +++++++++++-------- test/models/domain/force_delete_test.rb | 2 -- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/app/interactions/domains/force_delete_email/base.rb b/app/interactions/domains/force_delete_email/base.rb index af048d48f..291dcd136 100644 --- a/app/interactions/domains/force_delete_email/base.rb +++ b/app/interactions/domains/force_delete_email/base.rb @@ -12,16 +12,20 @@ module Domains Domain.where(registrant_id: registrant_ids) domains.each do |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 + 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, @@ -31,10 +35,10 @@ module Domains end def added_additional_email_into_notes(domain) - unless domain.status_notes[DomainStatus::FORCE_DELETE].include? email - domain.status_notes[DomainStatus::FORCE_DELETE].concat(' ' + email) - domain.save(validate: false) - end + 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) diff --git a/test/models/domain/force_delete_test.rb b/test/models/domain/force_delete_test.rb index 246a029cf..1ee0bc77e 100644 --- a/test/models/domain/force_delete_test.rb +++ b/test/models/domain/force_delete_test.rb @@ -414,8 +414,6 @@ class ForceDeleteTest < ActionMailer::TestCase 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 - notification = @domain.registrar.notifications.last - assert notification.text.include? asserted_text end def test_lifts_force_delete_if_contact_fixed