From d260eacc1a1fb6a8facb7bf66dda8d0163345eb0 Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Fri, 9 Jul 2021 12:09:20 +0300 Subject: [PATCH] added tasks for migrate data and tests --- ...igrate_before_force_delete_statuses_job.rb | 9 +++++++ .../migrate_statuses_to_domain_history_job.rb | 9 +++++++ app/models/domain.rb | 4 +++ lib/tasks/migrate_domain_statuses.rake | 10 +++++++ ...e_before_force_delete_statuses_job_test.rb | 27 +++++++++++++++++++ ...ate_statuses_to_domain_history_job_test.rb | 22 +++++++++++++++ 6 files changed, 81 insertions(+) create mode 100644 app/jobs/migrate_before_force_delete_statuses_job.rb create mode 100644 app/jobs/migrate_statuses_to_domain_history_job.rb create mode 100644 lib/tasks/migrate_domain_statuses.rake create mode 100644 test/jobs/migrate_before_force_delete_statuses_job_test.rb create mode 100644 test/jobs/migrate_statuses_to_domain_history_job_test.rb diff --git a/app/jobs/migrate_before_force_delete_statuses_job.rb b/app/jobs/migrate_before_force_delete_statuses_job.rb new file mode 100644 index 000000000..ba34eae3b --- /dev/null +++ b/app/jobs/migrate_before_force_delete_statuses_job.rb @@ -0,0 +1,9 @@ +class MigrateBeforeForceDeleteStatusesJob < ApplicationJob + def perform + domains = Domain.where.not(statuses_before_force_delete: nil) + domains.each do |domain| + domain.force_delete_domain_statuses_history = domain.statuses_before_force_delete + domain.save + end + end +end diff --git a/app/jobs/migrate_statuses_to_domain_history_job.rb b/app/jobs/migrate_statuses_to_domain_history_job.rb new file mode 100644 index 000000000..b5cc0a858 --- /dev/null +++ b/app/jobs/migrate_statuses_to_domain_history_job.rb @@ -0,0 +1,9 @@ +class MigrateStatusesToDomainHistoryJob < ApplicationJob + def perform + domains = Domain.all.select { |d| !d.locked_by_registrant? } + domains.each do |domain| + domain.admin_store_statuses_history = domain.statuses + domain.save + end + end +end diff --git a/app/models/domain.rb b/app/models/domain.rb index 5601167a2..519f33575 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -22,6 +22,10 @@ class Domain < ApplicationRecord alias_attribute :auth_info, :transfer_code # Old attribute name; for PaperTrail alias_attribute :registered_at, :created_at + store_accessor :json_statuses_history, + :force_delete_domain_statuses_history, + :admin_store_statuses_history + # TODO: whois requests ip whitelist for full info for own domains and partial info for other domains # TODO: most inputs should be trimmed before validatation, probably some global logic? diff --git a/lib/tasks/migrate_domain_statuses.rake b/lib/tasks/migrate_domain_statuses.rake new file mode 100644 index 000000000..8c68f9e70 --- /dev/null +++ b/lib/tasks/migrate_domain_statuses.rake @@ -0,0 +1,10 @@ +namespace :migrate_domain_statuses do + desc 'Starts collect invalid validation contacts' + task fd_domains: :environment do + MigrateBeforeForceDeleteStatusesJob.perform_later + end + + task admin_status_history: :environment do + MigrateStatusesToDomainHistoryJob.perform_later + end +end diff --git a/test/jobs/migrate_before_force_delete_statuses_job_test.rb b/test/jobs/migrate_before_force_delete_statuses_job_test.rb new file mode 100644 index 000000000..0288a686c --- /dev/null +++ b/test/jobs/migrate_before_force_delete_statuses_job_test.rb @@ -0,0 +1,27 @@ +require 'test_helper' + +class MigrateBeforeForceDeleteStatusesJobTest < ActiveJob::TestCase + setup do + travel_to Time.zone.parse('2010-07-05') + @domain = domains(:shop) + end + + def test_migrate_data_before_force_delete + @domain.update(statuses: [DomainStatus::SERVER_UPDATE_PROHIBITED]) + @domain.reload + assert @domain.statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED + + @domain.schedule_force_delete(type: :soft) + @domain.reload + + assert @domain.force_delete_scheduled? + + perform_enqueued_jobs do + MigrateBeforeForceDeleteStatusesJob.perform_later + end + + @domain.reload + + assert @domain.force_delete_domain_statuses_history.include? DomainStatus::SERVER_UPDATE_PROHIBITED + end +end diff --git a/test/jobs/migrate_statuses_to_domain_history_job_test.rb b/test/jobs/migrate_statuses_to_domain_history_job_test.rb new file mode 100644 index 000000000..dcacc327a --- /dev/null +++ b/test/jobs/migrate_statuses_to_domain_history_job_test.rb @@ -0,0 +1,22 @@ +require 'test_helper' + +class MigrateBeforeForceDeleteStatusesJobTest < ActiveJob::TestCase + setup do + travel_to Time.zone.parse('2010-07-05') + @domain = domains(:shop) + end + + def test_migrate_statuses_to_domain_history_job + @domain.update(statuses: [DomainStatus::SERVER_UPDATE_PROHIBITED]) + @domain.reload + assert @domain.statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED + + perform_enqueued_jobs do + MigrateStatusesToDomainHistoryJob.perform_later + end + + @domain.reload + + assert @domain.admin_store_statuses_history.include? DomainStatus::SERVER_UPDATE_PROHIBITED + end +end