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

Commit

Permalink
Try polymorphism/partials for winning bidder
Browse files Browse the repository at this point in the history
If there is not a winning bid, the bidder is a NullBidder
  • Loading branch information
Jacob Harris committed Jul 19, 2016
1 parent 8628225 commit 30a2850
Show file tree
Hide file tree
Showing 8 changed files with 26 additions and 20 deletions.
8 changes: 4 additions & 4 deletions app/models/bid.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ class Bid < ActiveRecord::Base
belongs_to :auction
belongs_to :bidder, class_name: 'User'

def bidder?
!bidder.nil?
end

def bidder_name
bidder.name
end

def decorated_bidder
UserPresenter.new(bidder)
end
end
8 changes: 4 additions & 4 deletions app/models/null_bid.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
class NullBid
def bidder?
false
end

def amount
nil
end
Expand All @@ -18,4 +14,8 @@ def bidder_id
def bidder_name
nil
end

def decorated_bidder
NullBidder.new
end
end
9 changes: 9 additions & 0 deletions app/models/null_bidder.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class NullBidder
def name
nil
end

def admin_user_page_link_partial
'components/null'
end
end
4 changes: 4 additions & 0 deletions app/presenters/user_presenter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ def welcome_message_partial
'components/null'
end

def admin_user_page_link_partial
'components/admin_user_page_link'
end

def admin_edit_auction_partial
if admin?
'auctions/edit_auction_link'
Expand Down
12 changes: 2 additions & 10 deletions app/view_models/admin/action_item_list_item.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,8 @@ def winning_bid
@_winner ||= WinningBid.new(auction).find
end

def winning_bidder?
winning_bid.bidder?
end

def winning_bidder_id
winning_bid.bidder_id
end

def winning_bidder_name
winning_bid.bidder_name
def winning_bidder
winning_bid.decorated_bidder
end

def id
Expand Down
2 changes: 1 addition & 1 deletion app/views/admin/action_items/_rejected_auctions.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
<td><%= link_to(auction.title, admin_auction_path(auction.id)) %></td>
<td><%= auction.delivery_due_at %></td>
<td><%= auction.delivery_url %></td>
<td><% if auction.winning_bidder? %><%= link_to auction.winning_bidder_name, admin_user_path(auction.winning_bidder_id) %><% end %></td>
<td><%= render partial: auction.winning_bidder.admin_user_page_link_partial, locals: {bidder: auction.winning_bidder} %></td>
<td><%= auction.rejected_at %></td>
<td><%= link_to('edit', edit_admin_auction_path(auction.id)) %></td>
</tr>
Expand Down
1 change: 1 addition & 0 deletions app/views/components/_admin_user_page_link.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<%= link_to bidder.name, admin_user_path(bidder.id) %>
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
end

[auction.title, auction.delivery_due_at, auction.delivery_url,
auction.winning_bidder_name, auction.rejected_at].each_with_index do |expected, i|
auction.winning_bidder.name, auction.rejected_at].each_with_index do |expected, i|
within(:xpath, cel_xpath(table_id: 'table-rejected', column: i + 1)) do
expect(page).to have_content(expected)
end
Expand Down

0 comments on commit 30a2850

Please sign in to comment.