Skip to content
This repository has been archived by the owner on Jul 30, 2019. It is now read-only.

Commit

Permalink
Merge 1ff63c0 into f8b2f3d
Browse files Browse the repository at this point in the history
  • Loading branch information
Jacob Harris committed Sep 21, 2016
2 parents f8b2f3d + 1ff63c0 commit e814586
Show file tree
Hide file tree
Showing 21 changed files with 64 additions and 60 deletions.
10 changes: 7 additions & 3 deletions app/models/admin_auction_status_presenter_factory.rb
Original file line number Diff line number Diff line change
Expand Up @@ -56,15 +56,19 @@ def other_purchase_card_presenter
end

def available?
AuctionStatus.new(auction).available?
bidding_status.available?
end

def future?
AuctionStatus.new(auction).future?
bidding_status.future?
end

def work_in_progress?
AuctionStatus.new(auction).work_in_progress?
auction.work_in_progress?
end

def bidding_status
@_bidding_status ||= BiddingStatus.new(auction)
end

def status
Expand Down
4 changes: 4 additions & 0 deletions app/models/auction.rb
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@ class Auction < ActiveRecord::Base
)
validate :publishing_auction, on: :update, if: :published_changed?

def work_in_progress?
delivery_url.present? && pending_delivery?
end

def publishing_auction
if published_was == 'unpublished' && purchase_card == 'default' && c2_status != 'approved'
errors.add(:c2_status, " is not approved.")
Expand Down
12 changes: 6 additions & 6 deletions app/models/bid_status_presenter_factory.rb
Original file line number Diff line number Diff line change
Expand Up @@ -100,23 +100,23 @@ def ineligible?
end

def work_in_progress?
auction_status.work_in_progress?
auction.work_in_progress?
end

def over?
auction_status.over?
bidding_status.over?
end

def available?
auction_status.available?
bidding_status.available?
end

def future?
auction_status.future?
bidding_status.future?
end

def auction_status
AuctionStatus.new(auction)
def bidding_status
BiddingStatus.new(auction)
end

def user_is_winning_bidder?
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
class AuctionStatus
class BiddingStatus
def initialize(auction)
@auction = auction
end
Expand All @@ -19,10 +19,6 @@ def expiring?
available? && auction.ended_at < (Time.current + 12.hours)
end

def work_in_progress?
auction.delivery_url.present? && auction.pending_delivery?
end

private

attr_reader :auction
Expand Down
2 changes: 1 addition & 1 deletion app/models/rules/base_rules.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def user_can_bid?(user)
end

def auction_available?
AuctionStatus.new(auction).available?
BiddingStatus.new(auction).available?
end

def user_is_eligible_to_bid?(user)
Expand Down
10 changes: 5 additions & 5 deletions app/models/status_presenter_factory.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,18 @@ def create
private

def status_name
if auction_status.expiring?
if bidding_status.expiring?
'Expiring'
elsif auction_status.over?
elsif bidding_status.over?
'Over'
elsif auction_status.future?
elsif bidding_status.future?
'Future'
else
'Available'
end
end

def auction_status
AuctionStatus.new(auction)
def bidding_status
@_bidding_status ||= BiddingStatus.new(auction)
end
end
8 changes: 4 additions & 4 deletions app/serializers/auction_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,15 @@ def winning_bid
private

def veiled_bids
if object.type == 'sealed_bid' && auction_status.available?
if object.type == 'sealed_bid' && bidding_status.available?
object.bids.where(bidder: scope)
else
object.bids
end
end

def find_winning_bid
if auction_status.available?
if bidding_status.available?
NullBid.new
else
WinningBid.new(object).find
Expand All @@ -74,7 +74,7 @@ def find_customer
object.customer || NullCustomer.new
end

def auction_status
@_auction_status ||= AuctionStatus.new(object)
def bidding_status
@_bidding_status ||= BiddingStatus.new(object)
end
end
2 changes: 1 addition & 1 deletion app/serializers/bid_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,6 @@ def veiled_bidder
end

def auction_available?
AuctionStatus.new(object.auction).available?
BiddingStatus.new(object.auction).available?
end
end
2 changes: 1 addition & 1 deletion app/services/create_auction_ended_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ def job
end

def auction_not_over?
!AuctionStatus.new(auction).over?
!BiddingStatus.new(auction).over?
end
end
6 changes: 3 additions & 3 deletions app/view_models/admin/auction_show_view_model.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ def initialize(auction:, current_user:)
end

def csv_report_partial
if auction_status.over?
if bidding_status.over?
'admin/auctions/csv_report'
else
'components/null'
Expand Down Expand Up @@ -108,8 +108,8 @@ def c2_fields
end
end

def auction_status
AuctionStatus.new(auction)
def bidding_status
BiddingStatus.new(auction)
end

def customer
Expand Down
2 changes: 1 addition & 1 deletion app/view_models/admin/bid_list_item.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def amount_to_currency
end

def auction_available?
AuctionStatus.new(bid.auction).available?
BiddingStatus.new(bid.auction).available?
end

def bidder_not_user?
Expand Down
2 changes: 1 addition & 1 deletion app/view_models/admin/edit_auction_view_model.rb
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ def default_date_time
end

def closed?
AuctionStatus.new(auction).over?
BiddingStatus.new(auction).over?
end

def publishable?
Expand Down
2 changes: 1 addition & 1 deletion app/view_models/admin/user_auction_view_model.rb
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def user_won?
end

def auction_over?
AuctionStatus.new(auction).over?
BiddingStatus.new(auction).over?
end

def auction_accepted?
Expand Down
8 changes: 4 additions & 4 deletions app/view_models/auction_list_item.rb
Original file line number Diff line number Diff line change
Expand Up @@ -86,14 +86,14 @@ def for_small_business?
end

def available?
auction_status.available?
bidding_status.available?
end

def over?
auction_status.over?
bidding_status.over?
end

def auction_status
AuctionStatus.new(auction)
def bidding_status
BiddingStatus.new(auction)
end
end
8 changes: 4 additions & 4 deletions app/view_models/auction_show_view_model.rb
Original file line number Diff line number Diff line change
Expand Up @@ -164,15 +164,15 @@ def user_bids
end

def over?
auction_status.over?
bidding_status.over?
end

def available?
auction_status.available?
bidding_status.available?
end

def auction_status
AuctionStatus.new(auction)
def bidding_status
@_bidding_status ||= BiddingStatus.new(auction)
end

def rules
Expand Down
2 changes: 1 addition & 1 deletion app/view_models/bid_list_item.rb
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def amount_to_currency
end

def auction_available?
AuctionStatus.new(bid.auction).available?
BiddingStatus.new(bid.auction).available?
end

def bidder_not_user?
Expand Down
2 changes: 1 addition & 1 deletion app/view_models/my_bid_list_item.rb
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ def delivery_due_at
private

def available?
AuctionStatus.new(auction).available?
BiddingStatus.new(auction).available?
end

def winning_bid
Expand Down
2 changes: 1 addition & 1 deletion docs/technical_debt.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ the various classes relate:
7. The `AuctionListItem` class also delegates to methods from an internal
object. So, a call to `AuctionListItem#available?` within a view
will actually call an internal variable instance of the
[AuctionStatus](../app/models/auction_status.rb) with that
[BiddingStatus](../app/models/bidding_status.rb) with that
method. This approach lets us collect related functions like _all
the methods for querying the availability of an auction_ in a single
focused place unlike having them be scattered among many methods in
Expand Down
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@
require 'rails_helper'

describe AuctionStatus do
describe BiddingStatus do
describe '#available?' do
context 'start datetime in past, end datetime in future' do
it 'is true' do
auction = FactoryGirl.build(:auction, :available)
status = AuctionStatus.new(auction)
status = BiddingStatus.new(auction)
expect(status).to be_available
end
end

context 'start datetime in past, end datetime in past' do
it 'is false' do
auction = FactoryGirl.build(:auction, :closed)
status = AuctionStatus.new(auction)
status = BiddingStatus.new(auction)
expect(status).not_to be_available
end
end

context 'start datetime in future, end datetime in future' do
it 'is false' do
auction = FactoryGirl.build(:auction, :future)
status = AuctionStatus.new(auction)
status = BiddingStatus.new(auction)
expect(status).not_to be_available
end
end

context 'the auction is not published' do
it 'is false' do
auction = FactoryGirl.build(:auction, :available, published: false)
status = AuctionStatus.new(auction)
status = BiddingStatus.new(auction)
expect(status).to_not be_available
end
end
Expand All @@ -39,23 +39,23 @@
context 'end datetime is in past' do
it 'is true' do
auction = FactoryGirl.build(:auction, :closed)
status = AuctionStatus.new(auction)
status = BiddingStatus.new(auction)
expect(status).to be_over
end
end

context 'end datetime is in future' do
it 'is false' do
auction = FactoryGirl.build(:auction, :future)
status = AuctionStatus.new(auction)
status = BiddingStatus.new(auction)
expect(status).not_to be_over
end
end

context 'end datetime is nil' do
it 'is false' do
auction = FactoryGirl.build(:auction, ended_at: nil)
status = AuctionStatus.new(auction)
status = BiddingStatus.new(auction)
expect(status).not_to be_over
end
end
Expand All @@ -65,23 +65,23 @@
context 'start datetime is in future' do
it 'is true' do
auction = FactoryGirl.build(:auction, :future)
status = AuctionStatus.new(auction)
status = BiddingStatus.new(auction)
expect(status).to be_future
end
end

context 'start datetime is in past' do
it 'is false' do
auction = FactoryGirl.build(:auction, :available)
status = AuctionStatus.new(auction)
status = BiddingStatus.new(auction)
expect(status).not_to be_future
end
end

context 'start datetime is nil' do
it 'is true' do
auction = FactoryGirl.build(:auction, started_at: nil)
status = AuctionStatus.new(auction)
status = BiddingStatus.new(auction)
expect(status).to be_future
end
end
Expand All @@ -91,23 +91,23 @@
context 'auction in progress and expiring in less than 12 hours' do
it 'is true' do
auction = FactoryGirl.build(:auction, :expiring)
status = AuctionStatus.new(auction)
status = BiddingStatus.new(auction)
expect(status).to be_expiring
end
end

context 'auction not started and expiring in less than 12 hours' do
it 'is false' do
auction = FactoryGirl.build(:auction, :future)
status = AuctionStatus.new(auction)
status = BiddingStatus.new(auction)
expect(status).not_to be_expiring
end
end

context 'auction in progress and expiring in more than 12 hours' do
it 'is false' do
auction = FactoryGirl.build(:auction, :available)
status = AuctionStatus.new(auction)
status = BiddingStatus.new(auction)
expect(status).not_to be_expiring
end
end
Expand Down
Loading

0 comments on commit e814586

Please sign in to comment.