diff --git a/app/models/concerns/domain/expirable.rb b/app/models/concerns/domain/expirable.rb index 237bdfd34..5c9afdc95 100644 --- a/app/models/concerns/domain/expirable.rb +++ b/app/models/concerns/domain/expirable.rb @@ -12,17 +12,17 @@ module Concerns::Domain::Expirable end def registered? - valid_to >= Time.zone.now + !expired? end def expired? - statuses.include?(DomainStatus::EXPIRED) + expire_time <= Time.zone.now end def expirable? return false if valid_to > Time.zone.now - if expired? && outzone_at.present? && delete_at.present? + if statuses.include?(DomainStatus::EXPIRED) && outzone_at.present? && delete_at.present? return false end diff --git a/app/models/domain.rb b/app/models/domain.rb index db0f15d2c..156f9bafa 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -283,16 +283,6 @@ class Domain < ActiveRecord::Base domain_transfers.find_by(status: DomainTransfer::PENDING) end - def expirable? - return false if valid_to > Time.zone.now - - if statuses.include?(DomainStatus::EXPIRED) && outzone_at.present? && delete_at.present? - return false - end - - true - end - def server_holdable? return false if statuses.include?(DomainStatus::SERVER_HOLD) return false if statuses.include?(DomainStatus::SERVER_MANUAL_INZONE) diff --git a/spec/models/concerns/domain/expirable_spec.rb b/spec/models/concerns/domain/expirable_spec.rb index 72fde82ab..f7d78f80b 100644 --- a/spec/models/concerns/domain/expirable_spec.rb +++ b/spec/models/concerns/domain/expirable_spec.rb @@ -18,38 +18,44 @@ RSpec.describe Domain, db: false do end describe '#registered?' do - before :example do - travel_to Time.zone.parse('05.07.2010 00:00') - end + let(:domain) { described_class.new } - context 'when :valid_to is in the future' do - let(:domain) { described_class.new(expire_time: Time.zone.parse('06.07.2010 00:01')) } + context 'when not expired' do + before :example do + expect(domain).to receive(:expired?).and_return(false) + end specify { expect(domain).to be_registered } end - context 'when :valid_to is the same as current time' do - let(:domain) { described_class.new(expire_time: Time.zone.parse('05.07.2010 00:00')) } - - specify { expect(domain).to_not be_registered } - end - - context 'when :valid_to is in the past' do - let(:domain) { described_class.new(expire_time: Time.zone.parse('04.07.2010 23:59')) } + context 'when expired' do + before :example do + expect(domain).to receive(:expired?).and_return(true) + end specify { expect(domain).to_not be_registered } end end describe '#expired?' do - context 'when :statuses contains expired status' do - let(:domain) { described_class.new(statuses: [DomainStatus::EXPIRED]) } + before :example do + travel_to Time.zone.parse('05.07.2010 00:00') + end + + context 'when :expire_time is in the past' do + let(:domain) { described_class.new(expire_time: Time.zone.parse('04.07.2010 23:59')) } specify { expect(domain).to be_expired } end - context 'when :statuses does not contain expired status' do - let(:domain) { described_class.new(statuses: [DomainStatus::CLIENT_HOLD]) } + context 'when :expire_time is now' do + let(:domain) { described_class.new(expire_time: Time.zone.parse('05.07.2010 00:00')) } + + specify { expect(domain).to be_expired } + end + + context 'when :expire_time is in the future' do + let(:domain) { described_class.new(expire_time: Time.zone.parse('05.07.2010 00:01')) } specify { expect(domain).to_not be_expired } end