Integrate auction

Closes #874
This commit is contained in:
Artur Beljajev 2018-11-29 15:08:22 +02:00
parent 640faaadb9
commit 42e8f86dae
51 changed files with 1619 additions and 53 deletions

View file

@ -0,0 +1,51 @@
require 'test_helper'
class DomainReleasableAuctionableTest < ActiveSupport::TestCase
setup do
@domain = domains(:shop)
Domain.release_to_auction = true
end
teardown do
Domain.release_to_auction = false
end
def test_sells_domain_at_auction
@domain.update!(delete_at: Time.zone.parse('2010-07-05 07:59'))
travel_to Time.zone.parse('2010-07-05 08:00')
Domain.release_domains
assert @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')
assert_difference 'Domain.count', -1 do
Domain.release_domains
end
end
def test_ignores_domains_with_delete_at_in_the_future_or_now
@domain.update!(delete_at: Time.zone.parse('2010-07-05 08:00'))
travel_to Time.zone.parse('2010-07-05 08:00')
assert_no_difference 'Domain.count' do
Domain.release_domains
end
assert_not @domain.domain_name.at_auction?
end
def test_ignores_domains_with_server_delete_prohibited_status
@domain.update!(delete_at: Time.zone.parse('2010-07-05 07:59'),
statuses: [DomainStatus::SERVER_DELETE_PROHIBITED])
travel_to Time.zone.parse('2010-07-05 08:00')
assert_no_difference 'Domain.count' do
Domain.release_domains
end
assert_not @domain.domain_name.at_auction?
end
end

View file

@ -0,0 +1,53 @@
require 'test_helper'
class DomainReleasableDiscardableTest < ActiveSupport::TestCase
setup do
@domain = domains(:shop)
end
def test_discards_domains_with_past_delete_at
@domain.update!(delete_at: Time.zone.parse('2010-07-05 07:59'))
travel_to Time.zone.parse('2010-07-05 08:00')
Domain.release_domains
@domain.reload
assert @domain.discarded?
end
def test_ignores_domains_with_delete_at_in_the_future_or_now
@domain.update!(delete_at: Time.zone.parse('2010-07-05 08:00'))
travel_to Time.zone.parse('2010-07-05 08:00')
Domain.release_domains
@domain.reload
assert_not @domain.discarded?
end
def test_ignores_already_discarded_domains
@domain.update!(delete_at: Time.zone.parse('2010-07-05 07:59'))
travel_to Time.zone.parse('2010-07-05 08:00')
Domain.release_domains
job_count = lambda do
QueJob.where("args->>0 = '#{@domain.id}'", job_class: DomainDeleteJob.name).count
end
assert_no_difference job_count, 'A domain should not be discarded again' do
Domain.release_domains
end
end
def test_ignores_domains_with_server_delete_prohibited_status
@domain.update!(delete_at: Time.zone.parse('2010-07-05 07:59'),
statuses: [DomainStatus::SERVER_DELETE_PROHIBITED])
travel_to Time.zone.parse('2010-07-05 08:00')
Domain.release_domains
@domain.reload
assert_not @domain.discarded?
end
end

View file

@ -0,0 +1,11 @@
require 'test_helper'
class DomainReleasableTest < ActiveSupport::TestCase
setup do
@domain = domains(:shop)
end
def test_releasing_a_domain_discards_it_by_default
refute Domain.release_to_auction
end
end