From a7b4b0d19ba5e83d6522e5741ecb4eccea04fdc3 Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Mon, 20 Jan 2020 17:06:37 +0500 Subject: [PATCH] Add condition on not having clientHold status for force-delete job See #1480 --- app/models/concerns/domain/force_delete.rb | 3 ++- app/models/concerns/job/force_delete.rb | 5 ++++- app/models/concerns/job/force_delete_logging.rb | 6 ++++++ test/models/domain_cron_test.rb | 14 ++++++++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/app/models/concerns/domain/force_delete.rb b/app/models/concerns/domain/force_delete.rb index c335fcfd0..0c131f43c 100644 --- a/app/models/concerns/domain/force_delete.rb +++ b/app/models/concerns/domain/force_delete.rb @@ -25,7 +25,8 @@ module Concerns::Domain::ForceDelete # rubocop:disable Metrics/ModuleLength 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 && + !statuses.include?(DomainStatus::CLIENT_HOLD) end def client_holdable? diff --git a/app/models/concerns/job/force_delete.rb b/app/models/concerns/job/force_delete.rb index 727ddaa3b..2c3cdfdb5 100644 --- a/app/models/concerns/job/force_delete.rb +++ b/app/models/concerns/job/force_delete.rb @@ -11,8 +11,9 @@ module Concerns ::Domain.force_delete_scheduled.each do |domain| proceed_client_hold(domain: domain) - log_end_end_client_hold(domain) end + + log_end_end_force_delete_job end def proceed_client_hold(domain:) @@ -24,6 +25,8 @@ module Concerns domain.save(validate: false) notify_client_hold(domain) + + log_end_end_client_hold(domain) end end end diff --git a/app/models/concerns/job/force_delete_logging.rb b/app/models/concerns/job/force_delete_logging.rb index 072c5b98f..8f6ee227c 100644 --- a/app/models/concerns/job/force_delete_logging.rb +++ b/app/models/concerns/job/force_delete_logging.rb @@ -22,6 +22,12 @@ module Concerns STDOUT << "#{Time.zone.now.utc} - Successfully set client_hold on (#{domain.name})" end + + def log_end_end_force_delete_job + return if Rails.env.test? + + STDOUT << "#{Time.zone.now.utc} - All client_hold setting are done\n" + end end end end diff --git a/test/models/domain_cron_test.rb b/test/models/domain_cron_test.rb index f0a0bbc9d..5b3b0120e 100644 --- a/test/models/domain_cron_test.rb +++ b/test/models/domain_cron_test.rb @@ -38,4 +38,18 @@ class DomainCronTest < ActiveSupport::TestCase assert_emails 1 end + + def test_does_not_sets_hold_if_already_set + Setting.redemption_grace_period = 30 + + @domain.update(valid_to: Time.zone.parse('2012-08-05')) + travel_to Time.zone.parse('2010-07-05') + @domain.schedule_force_delete(type: :soft) + @domain.reload + @domain.update(template_name: 'legal_person', statuses: [DomainStatus::CLIENT_HOLD]) + travel_to Time.zone.parse('2010-08-06') + DomainCron.start_client_hold + + assert_emails 0 + end end