diff --git a/app/models/concerns/domain/releasable.rb b/app/models/concerns/domain/releasable.rb index 84696784e..c25af44be 100644 --- a/app/models/concerns/domain/releasable.rb +++ b/app/models/concerns/domain/releasable.rb @@ -36,7 +36,7 @@ module Concerns def release if release_to_auction transaction do - domain_name.sell_at_auction + domain_name.sell_at_auction if domain_name.auctionable? destroy! end else diff --git a/app/models/dns/domain_name.rb b/app/models/dns/domain_name.rb index 3a45ddc74..a5b56df1b 100644 --- a/app/models/dns/domain_name.rb +++ b/app/models/dns/domain_name.rb @@ -69,6 +69,10 @@ module DNS ReservedDomain.where(name: name).any? end + def auctionable? + !not_auctionable? + end + def to_s name end @@ -77,6 +81,10 @@ module DNS attr_reader :name + def not_auctionable? + blocked? || reserved? + end + def zone_with_same_origin? DNS::Zone.where(origin: name).any? end diff --git a/test/models/dns/domain_name_test.rb b/test/models/dns/domain_name_test.rb index 4d66227d5..5385c1c0b 100644 --- a/test/models/dns/domain_name_test.rb +++ b/test/models/dns/domain_name_test.rb @@ -141,4 +141,22 @@ class DNS::DomainNameTest < ActiveSupport::TestCase assert domain_name.not_registered? assert_not domain_name.registered? end + + def test_auctionable_when_not_blocked_or_reserved + domain_name = DNS::DomainName.new('shop.test') + assert_not domain_name.blocked? + assert_not domain_name.reserved? + + assert domain_name.auctionable? + end + + def test_not_auctionable_when_blocked + assert_equal 'blocked.test', blocked_domains(:one).name + assert_not DNS::DomainName.new('blocked.test').auctionable? + end + + def test_not_auctionable_when_reserved + assert_equal 'reserved.test', reserved_domains(:one).name + assert_not DNS::DomainName.new('reserved.test').auctionable? + end end diff --git a/test/models/domain/releasable/auctionable_test.rb b/test/models/domain/releasable/auctionable_test.rb index 9ed0abc7f..751e0be88 100644 --- a/test/models/domain/releasable/auctionable_test.rb +++ b/test/models/domain/releasable/auctionable_test.rb @@ -22,6 +22,24 @@ class DomainReleasableAuctionableTest < ActiveSupport::TestCase assert @domain.domain_name.at_auction? end + def test_skips_auction_when_domains_is_blocked + assert_equal 'shop.test', @domain.name + blocked_domains(:one).update!(name: 'shop.test') + + @domain.release + + assert_not @domain.domain_name.at_auction? + end + + def test_skips_auction_when_domains_is_reserved + assert_equal 'shop.test', @domain.name + reserved_domains(:one).update!(name: 'shop.test') + + @domain.release + + assert_not @domain.domain_name.at_auction? + end + def test_deletes_registered_domain @domain.update!(delete_at: Time.zone.parse('2010-07-05 07:59')) travel_to Time.zone.parse('2010-07-05 08:00')