mirror of
https://github.com/internetee/registry.git
synced 2025-06-06 04:37:30 +02:00
145 lines
No EOL
3.9 KiB
Ruby
145 lines
No EOL
3.9 KiB
Ruby
require 'test_helper'
|
|
|
|
class AuctionTest < ActiveSupport::TestCase
|
|
setup do
|
|
@auction = auctions(:one)
|
|
end
|
|
|
|
def test_fixture_is_valid
|
|
assert @auction.valid?
|
|
end
|
|
|
|
def test_statuses
|
|
assert_equal ({ 'started' => 'started',
|
|
'no_bids' => 'no_bids',
|
|
'awaiting_payment' => 'awaiting_payment',
|
|
'payment_received' => 'payment_received',
|
|
'payment_not_received' => 'payment_not_received',
|
|
'domain_registered' => 'domain_registered',
|
|
'domain_not_registered' => 'domain_not_registered' }), Auction.statuses
|
|
end
|
|
|
|
def test_starts_an_auction
|
|
assert_not @auction.started?
|
|
|
|
@auction.start
|
|
@auction.reload
|
|
|
|
assert @auction.started?
|
|
end
|
|
|
|
def test_pending
|
|
domain_name = DNS::DomainName.new('auction.test')
|
|
assert_equal 'auction.test', @auction.domain
|
|
|
|
assert @auction.no_bids?
|
|
assert_nil Auction.pending(domain_name)
|
|
|
|
@auction.update!(status: Auction.statuses[:started])
|
|
assert_equal @auction, Auction.pending(domain_name)
|
|
|
|
@auction.update!(status: Auction.statuses[:awaiting_payment])
|
|
assert_equal @auction, Auction.pending(domain_name)
|
|
|
|
@auction.update!(status: Auction.statuses[:payment_received])
|
|
assert_equal @auction, Auction.pending(domain_name)
|
|
end
|
|
|
|
def test_record_with_invalid_status_cannot_be_saved
|
|
# ArgumentError is triggered by ActiveRecord::Base.enum
|
|
assert_raises ArgumentError do
|
|
@auction.status = 'invalid'
|
|
@auction.save!
|
|
end
|
|
end
|
|
|
|
def test_marking_as_no_bids
|
|
@auction.update!(status: Auction.statuses[:started])
|
|
|
|
@auction.mark_as_no_bids
|
|
@auction.reload
|
|
|
|
assert @auction.no_bids?
|
|
end
|
|
|
|
def test_marking_as_payment_received
|
|
@auction.update!(status: Auction.statuses[:awaiting_payment], registration_code: nil)
|
|
|
|
@auction.mark_as_payment_received
|
|
@auction.reload
|
|
|
|
assert @auction.payment_received?
|
|
assert_not_nil @auction.registration_code
|
|
end
|
|
|
|
def test_marking_as_payment_not_received
|
|
@auction.update!(status: Auction.statuses[:awaiting_payment], registration_code: nil)
|
|
|
|
@auction.mark_as_payment_not_received
|
|
@auction.reload
|
|
|
|
assert @auction.payment_not_received?
|
|
assert_nil @auction.registration_code
|
|
end
|
|
|
|
def test_marking_as_payment_not_received_restarts_an_auction
|
|
@auction.update!(status: Auction.statuses[:awaiting_payment])
|
|
|
|
assert_difference 'Auction.count' do
|
|
@auction.mark_as_payment_not_received
|
|
end
|
|
end
|
|
|
|
def test_marking_as_domain_not_registered
|
|
@auction.update!(status: Auction.statuses[:payment_received])
|
|
|
|
@auction.mark_as_domain_not_registered
|
|
@auction.reload
|
|
|
|
assert @auction.domain_not_registered?
|
|
end
|
|
|
|
def test_marking_as_domain_not_registered_restarts_an_auction
|
|
@auction.update!(status: Auction.statuses[:payment_received])
|
|
|
|
assert_difference 'Auction.count' do
|
|
@auction.mark_as_domain_not_registered
|
|
end
|
|
end
|
|
|
|
def test_domain_registrable
|
|
assert @auction.no_bids?
|
|
assert_not @auction.domain_registrable?
|
|
|
|
@auction.status = Auction.statuses[:payment_received]
|
|
@auction.registration_code = 'auction001'
|
|
|
|
assert @auction.domain_registrable?('auction001')
|
|
end
|
|
|
|
def test_domain_unregistrable
|
|
@auction.status = Auction.statuses[:payment_not_received]
|
|
@auction.registration_code = 'auction001'
|
|
|
|
assert_not @auction.domain_registrable?('auction001')
|
|
|
|
@auction.status = Auction.statuses[:payment_received]
|
|
@auction.registration_code = 'auction001'
|
|
|
|
assert_not @auction.domain_registrable?('wrong')
|
|
assert_not @auction.domain_registrable?(nil)
|
|
assert_not @auction.domain_registrable?('')
|
|
end
|
|
|
|
def test_restarts_an_auction
|
|
assert_equal 'auction.test', @auction.domain
|
|
|
|
assert_difference 'Auction.count' do
|
|
@auction.restart
|
|
end
|
|
|
|
new_auction = Auction.last
|
|
assert_equal 'auction.test', new_auction.domain
|
|
assert new_auction.started?
|
|
end
|
|
end |