From e7581246d64bcdffb587491f3b87bf7681771365 Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Wed, 15 Jan 2020 17:46:31 +0500 Subject: [PATCH] Add test for clear force delete on registrar change --- app/models/concerns/domain/force_delete.rb | 2 +- test/models/domain/force_delete_test.rb | 1 + test/models/domain_cron_test.rb | 17 ++++++++++++++++- test/models/domain_test.rb | 16 ++++++++++++++++ .../admin_area/domains/force_delete_test.rb | 10 +++++++++- 5 files changed, 43 insertions(+), 3 deletions(-) diff --git a/app/models/concerns/domain/force_delete.rb b/app/models/concerns/domain/force_delete.rb index 0120347c8e..c335fcfd0e 100644 --- a/app/models/concerns/domain/force_delete.rb +++ b/app/models/concerns/domain/force_delete.rb @@ -25,7 +25,7 @@ def force_delete_scheduled? def should_notify_on_soft_force_delete? force_delete_scheduled? && contact_notification_sent_date.blank? && - force_delete_start.to_date == Time.zone.now.to_date && force_delete_type.to_sym == :soft + force_delete_start.to_date <= Time.zone.now.to_date && force_delete_type.to_sym == :soft end def client_holdable? diff --git a/test/models/domain/force_delete_test.rb b/test/models/domain/force_delete_test.rb index 5945ac807d..0537218684 100644 --- a/test/models/domain/force_delete_test.rb +++ b/test/models/domain/force_delete_test.rb @@ -156,6 +156,7 @@ def test_force_delete_soft_year_ahead_sets_client_hold asserted_status = DomainStatus::CLIENT_HOLD @domain.update(valid_to: Time.zone.parse('2012-08-05')) + @domain.update(template_name: 'legal_person') assert_not @domain.force_delete_scheduled? travel_to Time.zone.parse('2010-07-05') @domain.schedule_force_delete(type: :soft) diff --git a/test/models/domain_cron_test.rb b/test/models/domain_cron_test.rb index 742bf2eaf3..f0a0bbc9d4 100644 --- a/test/models/domain_cron_test.rb +++ b/test/models/domain_cron_test.rb @@ -23,4 +23,19 @@ def test_clean_expired_pendings_notifies_registrant_by_email assert_emails 1 end -end \ No newline at end of file + + def test_client_hold + Setting.redemption_grace_period = 30 + + @domain.update(valid_to: Time.zone.parse('2012-08-05')) + assert_not @domain.force_delete_scheduled? + travel_to Time.zone.parse('2010-07-05') + @domain.schedule_force_delete(type: :soft) + @domain.reload + @domain.update(template_name: 'legal_person') + travel_to Time.zone.parse('2010-08-06') + DomainCron.start_client_hold + + assert_emails 1 + end +end diff --git a/test/models/domain_test.rb b/test/models/domain_test.rb index 7e681e5603..8bac6d7ab4 100644 --- a/test/models/domain_test.rb +++ b/test/models/domain_test.rb @@ -405,6 +405,22 @@ def test_deactivation assert_not domain.active? end + def test_registrant_change_removes_force_delete + @domain.update_columns(valid_to: Time.zone.parse('2010-10-05'), + force_delete_date: nil) + @domain.update(template_name: 'legal_person') + travel_to Time.zone.parse('2010-07-05') + @domain.schedule_force_delete(type: :fast_track) + assert(@domain.force_delete_scheduled?) + other_registrant = Registrant.find_by(code: 'jane-001') + @domain.pending_json['new_registrant_id'] = other_registrant.id + + @domain.registrant = other_registrant + @domain.save! + + assert_not(@domain.force_delete_scheduled?) + end + private def valid_domain diff --git a/test/system/admin_area/domains/force_delete_test.rb b/test/system/admin_area/domains/force_delete_test.rb index b8af02f946..4ccc109232 100644 --- a/test/system/admin_area/domains/force_delete_test.rb +++ b/test/system/admin_area/domains/force_delete_test.rb @@ -28,7 +28,7 @@ def test_notifies_registrar end end - def test_notifies_registrant_and_admin_contacts_by_email_by_default + def test_notifies_registrant_and_admin_contacts_by_email_if_fast_delete assert_emails 1 do visit edit_admin_domain_url(@domain) find(:css, '#soft_delete').set(false) @@ -36,6 +36,14 @@ def test_notifies_registrant_and_admin_contacts_by_email_by_default end end + def test_notifies_registrant_and_admin_contacts_by_email_if_soft_delete + assert_emails 0 do + visit edit_admin_domain_url(@domain) + find(:css, '#soft_delete').set(true) + click_link_or_button 'Force delete domain' + end + end + def test_allows_to_skip_notifying_registrant_and_admin_contacts_by_email assert_no_emails do visit edit_admin_domain_url(@domain)