From 63db8d140920f55ca0b4417071d4cfcc7640b9e5 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 18 Apr 2018 23:40:04 +0300 Subject: [PATCH] Extract concern #790 --- app/models/concerns/domain/deletable.rb | 29 ----------------- app/models/concerns/domain/discardable.rb | 32 +++++++++++++++++++ app/models/domain.rb | 1 + ...{deletable_test.rb => discardable_test.rb} | 2 +- 4 files changed, 34 insertions(+), 30 deletions(-) create mode 100644 app/models/concerns/domain/discardable.rb rename test/models/domain/{deletable_test.rb => discardable_test.rb} (92%) diff --git a/app/models/concerns/domain/deletable.rb b/app/models/concerns/domain/deletable.rb index bb23c3522..ac78de92c 100644 --- a/app/models/concerns/domain/deletable.rb +++ b/app/models/concerns/domain/deletable.rb @@ -1,35 +1,6 @@ module Concerns::Domain::Deletable extend ActiveSupport::Concern - class_methods do - def discard_domains - domains = where('delete_at < ? AND ? != ALL(statuses) AND ? != ALL(statuses)', - Time.zone.now, - DomainStatus::SERVER_DELETE_PROHIBITED, - DomainStatus::DELETE_CANDIDATE) - - domains.map(&:discard) - end - end - - def discard - statuses << DomainStatus::DELETE_CANDIDATE - # We don't validate deliberately since nobody is interested in fixing discarded domain - save(validate: false) - delete_later - logger.info "Domain #{name} (ID: #{id}) is scheduled to be deleted" - end - - def keep - statuses.delete(DomainStatus::DELETE_CANDIDATE) - save - do_not_delete_later - end - - def discarded? - statuses.include?(DomainStatus::DELETE_CANDIDATE) - end - private def delete_later diff --git a/app/models/concerns/domain/discardable.rb b/app/models/concerns/domain/discardable.rb new file mode 100644 index 000000000..b7b8ed608 --- /dev/null +++ b/app/models/concerns/domain/discardable.rb @@ -0,0 +1,32 @@ +module Concerns::Domain::Discardable + extend ActiveSupport::Concern + + class_methods do + def discard_domains + domains = where('delete_at < ? AND ? != ALL(statuses) AND ? != ALL(statuses)', + Time.zone.now, + DomainStatus::SERVER_DELETE_PROHIBITED, + DomainStatus::DELETE_CANDIDATE) + + domains.map(&:discard) + end + end + + def discard + statuses << DomainStatus::DELETE_CANDIDATE + # We don't validate deliberately since nobody is interested in fixing discarded domain + save(validate: false) + delete_later + logger.info "Domain #{name} (ID: #{id}) is scheduled to be deleted" + end + + def keep + statuses.delete(DomainStatus::DELETE_CANDIDATE) + save + do_not_delete_later + end + + def discarded? + statuses.include?(DomainStatus::DELETE_CANDIDATE) + end +end diff --git a/app/models/domain.rb b/app/models/domain.rb index 1b59a1607..3dd1ac308 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -5,6 +5,7 @@ class Domain < ActiveRecord::Base include Concerns::Domain::Expirable include Concerns::Domain::Activatable include Concerns::Domain::ForceDelete + include Concerns::Domain::Discardable include Concerns::Domain::Deletable include Concerns::Domain::Transferable diff --git a/test/models/domain/deletable_test.rb b/test/models/domain/discardable_test.rb similarity index 92% rename from test/models/domain/deletable_test.rb rename to test/models/domain/discardable_test.rb index 5e41968d7..9d366a5f2 100644 --- a/test/models/domain/deletable_test.rb +++ b/test/models/domain/discardable_test.rb @@ -1,6 +1,6 @@ require 'test_helper' -class DomainDeletableTest < ActiveSupport::TestCase +class DomainDiscardableTest < ActiveSupport::TestCase setup do @domain = domains(:shop) end