diff --git a/.ruby-version b/.ruby-version index 94ff29cc4..75a22a26a 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.1.1 +3.0.3 diff --git a/app/interactions/domains/force_delete_email/base.rb b/app/interactions/domains/force_delete_email/base.rb index 8b3ec9965..04e7dde5d 100644 --- a/app/interactions/domains/force_delete_email/base.rb +++ b/app/interactions/domains/force_delete_email/base.rb @@ -11,6 +11,8 @@ module Domains domains = domain_contacts.map(&:domain).flatten + Domain.where(registrant_id: registrant_ids) + return if expired_or_hold_domains_exists?(domains) + domains.each do |domain| next if domain.expired? @@ -20,6 +22,12 @@ module Domains private + def expired_or_hold_domains_exists?(domains) + domains.any? do |domain| + domain.statuses.include?(DomainStatus::SERVER_HOLD) && email.include?(domain.name) + end + end + def before_execute_force_delete(domain) if domain.force_delete_scheduled? && !domain.status_notes[DomainStatus::FORCE_DELETE].nil? added_additional_email_into_notes(domain) diff --git a/test/interactions/force_delete_email/base_test.rb b/test/interactions/force_delete_email/base_test.rb new file mode 100644 index 000000000..c3f688678 --- /dev/null +++ b/test/interactions/force_delete_email/base_test.rb @@ -0,0 +1,18 @@ +require 'test_helper' + +class BaseTest < ActiveSupport::TestCase + def test_hold_domains_force_delete_email + domain = domains(:shop) + domain.update!(statuses: [DomainStatus::SERVER_HOLD]) + domain.update!(expire_time: Time.zone.now + 1.year) + + registrant = domain.registrant + registrant.update!(email: "#{registrant.email.split('@').first}@#{domain.name}") + + Domains::ForceDeleteEmail::Base.run(email: registrant.email) + + domain.reload + + assert_not domain.force_delete_scheduled? + end +end