Skip to content

Commit 1314d7a

Browse files
authored
Merge pull request #5429 from janeewheatley/fix-vendor-purchase-sorting-5428
5428 Sort vendor purchases by issued_at in reverse chronological order
2 parents fdbdb05 + 70a54eb commit 1314d7a

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

app/controllers/vendors_controller.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ def edit
4747

4848
def show
4949
@vendor = current_organization.vendors.includes(:purchases).find(params[:id])
50+
@purchases = @vendor.purchases.order(issued_at: :desc)
5051
end
5152

5253
def update

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+
<% @purchases.each do |purchase| %>
7878
<tr>
79-
<td><%= purchase.created_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/requests/vendors_requests_spec.rb

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,27 @@
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+
old_date = old_purchase.issued_at.strftime("%m/%d/%Y")
138+
middle_date = middle_purchase.issued_at.strftime("%m/%d/%Y")
139+
new_date = new_purchase.issued_at.strftime("%m/%d/%Y")
140+
141+
dates = [new_date, middle_date, old_date]
142+
dates.each { |date| expect(response.body).to include(date) }
143+
144+
expect(response.body.index(new_date)).to be < response.body.index(middle_date)
145+
expect(response.body.index(middle_date)).to be < response.body.index(old_date)
146+
end
126147
end
127148

128149
describe "DELETE #destroy" do

0 commit comments

Comments
 (0)