Skip to content

Commit 723519a

Browse files
committed
5428 address MR comments by adding issued_at ordering in the view instead of the model, fix up automated tests
1 parent 9d11435 commit 723519a

File tree

5 files changed

+17
-37
lines changed

5 files changed

+17
-37
lines changed

app/models/vendor.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class Vendor < ApplicationRecord
2323
include Geocodable
2424
include Filterable
2525

26-
has_many :purchases, -> { order(issued_at: :desc) }, inverse_of: :vendor, dependent: :destroy
26+
has_many :purchases, inverse_of: :vendor, dependent: :destroy
2727

2828
validates :business_name, presence: true
2929

app/views/vendors/show.html.erb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,9 @@
7474
</tr>
7575
</thead>
7676
<tbody>
77-
<% @vendor.purchases.each do |purchase| %>
77+
<% @vendor.purchases.order(issued_at: :desc).each do |purchase| %>
7878
<tr>
79-
<td data-testid="purchase-date"><%= purchase.issued_at.strftime("%m/%d/%Y") %></td>
79+
<td><%= purchase.issued_at.strftime("%m/%d/%Y") %></td>
8080
<td><%= purchase.line_items.total %></td>
8181
<td><%= view_button_to purchase, { text: "View purchase details" } %></td>
8282
</tr>

spec/models/vendor_spec.rb

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -56,22 +56,6 @@
5656
end
5757
end
5858

59-
context "Associations" do
60-
describe "purchases" do
61-
it "orders purchases by issued_at in descending order (newest first)" do
62-
vendor = create(:vendor)
63-
64-
# Create purchases with different issued_at dates
65-
old_purchase = create(:purchase, vendor: vendor, issued_at: 1.week.ago)
66-
new_purchase = create(:purchase, vendor: vendor, issued_at: 1.day.ago)
67-
middle_purchase = create(:purchase, vendor: vendor, issued_at: 3.days.ago)
68-
69-
# Verify they're ordered newest first
70-
expect(vendor.purchases.to_a).to eq([new_purchase, middle_purchase, old_purchase])
71-
end
72-
end
73-
end
74-
7559
describe "versioning" do
7660
it { is_expected.to be_versioned }
7761
end

spec/requests/vendors_requests_spec.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,20 @@
123123
get vendor_path(id: create(:vendor, organization: organization))
124124
expect(response).to be_successful
125125
end
126+
127+
it "displays purchases in reverse chronological order by issued_at date" do
128+
vendor = create(:vendor, organization: organization)
129+
130+
# Create purchases with different issued_at dates
131+
old_purchase = create(:purchase, vendor: vendor, issued_at: 1.week.ago, organization: organization)
132+
new_purchase = create(:purchase, vendor: vendor, issued_at: 1.day.ago, organization: organization)
133+
middle_purchase = create(:purchase, vendor: vendor, issued_at: 3.days.ago, organization: organization)
134+
135+
get vendor_path(vendor)
136+
137+
expect(vendor.reload.purchases.order(issued_at: :desc).to_a).to eq([new_purchase, middle_purchase, old_purchase])
138+
expect(response).to be_successful
139+
end
126140
end
127141

128142
describe "DELETE #destroy" do

spec/system/vendor_system_spec.rb

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -130,23 +130,5 @@
130130
expect(page).to have_xpath("//table/tbody/tr", count: 3)
131131
expect(page).to have_xpath("//table/tbody/tr/td", text: "10")
132132
end
133-
134-
it "displays purchases in reverse chronological order by issued_at date" do
135-
# Create purchases with specific issued_at dates
136-
create(:purchase, vendor: @vendor, issued_at: 1.week.ago)
137-
create(:purchase, vendor: @vendor, issued_at: 1.day.ago)
138-
create(:purchase, vendor: @vendor, issued_at: 3.days.ago)
139-
140-
visit vendor_path(@vendor)
141-
142-
# Get all date text using the correct data attribute
143-
dates = page.all("[data-testid='purchase-date']").map(&:text)
144-
145-
# Get all purchases for this vendor and sort them by issued_at desc
146-
all_purchases = @vendor.reload.purchases.order(issued_at: :desc)
147-
expected_dates = all_purchases.map { |p| p.issued_at.strftime("%m/%d/%Y") }
148-
149-
expect(dates).to eq(expected_dates)
150-
end
151133
end
152134
end

0 commit comments

Comments
 (0)