diff --git a/Gemfile b/Gemfile index c7c0b09b4..d3faaaf05 100644 --- a/Gemfile +++ b/Gemfile @@ -1,7 +1,7 @@ source 'https://rubygems.org' # core -gem 'active_interaction', '~> 3.8' +gem 'active_interaction', '~> 4.0' gem 'apipie-rails', '~> 0.5.18' gem 'bootsnap', '>= 1.1.0', require: false gem 'iso8601', '0.12.1' # for dates and times diff --git a/Gemfile.lock b/Gemfile.lock index a403149aa..6ec4224bd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -112,8 +112,8 @@ GEM erubi (~> 1.4) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.1, >= 1.2.0) - active_interaction (3.8.3) - activemodel (>= 4, < 7) + active_interaction (4.0.0) + activemodel (>= 5, < 7) activejob (6.0.3.6) activesupport (= 6.0.3.6) globalid (>= 0.3.6) @@ -507,7 +507,7 @@ PLATFORMS x86_64-linux DEPENDENCIES - active_interaction (~> 3.8) + active_interaction (~> 4.0) activerecord-import airbrake apipie-rails (~> 0.5.18) diff --git a/app/interactions/domains/cancel_force_delete/cancel_force_delete.rb b/app/interactions/domains/cancel_force_delete/cancel_force_delete.rb index 7c4ca90e1..6a723416d 100644 --- a/app/interactions/domains/cancel_force_delete/cancel_force_delete.rb +++ b/app/interactions/domains/cancel_force_delete/cancel_force_delete.rb @@ -2,10 +2,10 @@ module Domains module CancelForceDelete class CancelForceDelete < Base def execute - compose(RemoveForceDeleteStatuses, inputs) - compose(RestoreStatusesBeforeForceDelete, inputs) - compose(ClearForceDeleteData, inputs) - compose(NotifyRegistrar, inputs) + compose(RemoveForceDeleteStatuses, inputs.to_h) + compose(RestoreStatusesBeforeForceDelete, inputs.to_h) + compose(ClearForceDeleteData, inputs.to_h) + compose(NotifyRegistrar, inputs.to_h) end end end diff --git a/app/interactions/domains/delete/do_delete.rb b/app/interactions/domains/delete/do_delete.rb index 202c36938..0d76fa1af 100644 --- a/app/interactions/domains/delete/do_delete.rb +++ b/app/interactions/domains/delete/do_delete.rb @@ -6,7 +6,7 @@ module Domains WhoisRecord.where(domain_id: domain.id).destroy_all domain.destroy - compose(Domains::Delete::NotifyRegistrar, inputs) + Domains::Delete::NotifyRegistrar.run(inputs.to_h) end end end diff --git a/app/interactions/domains/delete_confirm/process_action.rb b/app/interactions/domains/delete_confirm/process_action.rb index 59f23de67..0da3cfcf0 100644 --- a/app/interactions/domains/delete_confirm/process_action.rb +++ b/app/interactions/domains/delete_confirm/process_action.rb @@ -7,9 +7,9 @@ module Domains case action when RegistrantVerification::CONFIRMED - compose(ProcessDeleteConfirmed, inputs) + compose(ProcessDeleteConfirmed, inputs.to_h) when RegistrantVerification::REJECTED - compose(ProcessDeleteRejected, inputs) + compose(ProcessDeleteRejected, inputs.to_h) end end end diff --git a/app/interactions/domains/force_delete/set_force_delete.rb b/app/interactions/domains/force_delete/set_force_delete.rb index 16a0b09fa..d5f3aa871 100644 --- a/app/interactions/domains/force_delete/set_force_delete.rb +++ b/app/interactions/domains/force_delete/set_force_delete.rb @@ -2,12 +2,12 @@ module Domains module ForceDelete class SetForceDelete < Base def execute - compose(CheckDiscarded, inputs) - compose(PrepareDomain, inputs) - compose(SetStatus, inputs) - compose(PostSetProcess, inputs) - compose(NotifyRegistrar, inputs) - compose(NotifyByEmail, inputs) + compose(CheckDiscarded, inputs.to_h) + compose(PrepareDomain, inputs.to_h) + compose(SetStatus, inputs.to_h) + compose(PostSetProcess, inputs.to_h) + compose(NotifyRegistrar, inputs.to_h) + compose(NotifyByEmail, inputs.to_h) end end end diff --git a/app/interactions/domains/update_confirm/process_action.rb b/app/interactions/domains/update_confirm/process_action.rb index 6ef8d0fe6..07c3a6dd3 100644 --- a/app/interactions/domains/update_confirm/process_action.rb +++ b/app/interactions/domains/update_confirm/process_action.rb @@ -7,9 +7,9 @@ module Domains case action when RegistrantVerification::CONFIRMED - compose(ProcessUpdateConfirmed, inputs) + Domains::UpdateConfirm::ProcessUpdateConfirmed.run(inputs.to_h) when RegistrantVerification::REJECTED - compose(ProcessUpdateRejected, inputs) + Domains::UpdateConfirm::ProcessUpdateRejected.run(inputs.to_h) end end end diff --git a/app/interactions/whois/update.rb b/app/interactions/whois/update.rb index bd37b4576..e00824c44 100644 --- a/app/interactions/whois/update.rb +++ b/app/interactions/whois/update.rb @@ -13,7 +13,7 @@ module Whois Array(names).each do |name| record = find_record(klass, name) if record - Whois::UpdateRecord.run(record: record, type: type) + Whois::UpdateRecord.run(record: { klass: klass.to_s, id: record.id, type: type }) else Whois::DeleteRecord.run(name: name, type: type) end diff --git a/app/interactions/whois/update_record.rb b/app/interactions/whois/update_record.rb index 6fc838968..28c8a6786 100644 --- a/app/interactions/whois/update_record.rb +++ b/app/interactions/whois/update_record.rb @@ -1,12 +1,14 @@ module Whois class UpdateRecord < ActiveInteraction::Base - interface :record - string :type - - validates :type, inclusion: { in: %w[reserved blocked domain disputed zone] } + hash :record do + string :klass + integer :id + string :type + end def execute - send "update_#{type}", record + data = record['klass'].constantize.find_by(id: record['id']) + send "update_#{record['type']}", data end def update_domain(domain) diff --git a/app/jobs/domain_update_confirm_job.rb b/app/jobs/domain_update_confirm_job.rb index b5085520e..aea79b7b5 100644 --- a/app/jobs/domain_update_confirm_job.rb +++ b/app/jobs/domain_update_confirm_job.rb @@ -1,8 +1,11 @@ class DomainUpdateConfirmJob < ApplicationJob def perform(domain_id, action, initiator = nil) domain = Epp::Domain.find(domain_id) - Domains::UpdateConfirm::ProcessAction.run(domain: domain, - action: action, - initiator: initiator) + attrs = { + domain: domain, + action: action, + initiator: initiator, + } + Domains::UpdateConfirm::ProcessAction.run(attrs) end end diff --git a/test/jobs/dispute_status_update_job_test.rb b/test/jobs/dispute_status_update_job_test.rb index 7784cdeac..a3a65b3e5 100644 --- a/test/jobs/dispute_status_update_job_test.rb +++ b/test/jobs/dispute_status_update_job_test.rb @@ -56,7 +56,7 @@ class DisputeStatusUpdateJobTest < ActiveJob::TestCase # Dispute status is added automatically if starts_at is not in future perform_enqueued_jobs do - Dispute.create(domain_name: 'shop.test', starts_at: Time.zone.parse('2010-07-05')) + Dispute.create(domain_name: 'shop.test', starts_at: Time.zone.today) end domain.reload