Extract concern

#790
This commit is contained in:
Artur Beljajev 2018-04-18 23:40:04 +03:00
parent 453acf6616
commit 63db8d1409
4 changed files with 34 additions and 30 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -1,6 +1,6 @@
require 'test_helper'
class DomainDeletableTest < ActiveSupport::TestCase
class DomainDiscardableTest < ActiveSupport::TestCase
setup do
@domain = domains(:shop)
end