From 88c1ffb0b1169b25a17db13ccf3be0e997ee09f6 Mon Sep 17 00:00:00 2001 From: Morgan Roderick Date: Tue, 10 Mar 2026 13:51:31 +0100 Subject: [PATCH] test(listable): add tests for upcoming scope ordering Add tests to verify that today_and_upcoming and upcoming scopes return workshops in ascending order (soonest first), overriding the Workshop default_scope which orders in descending order. This ensures the fix in PR #2515 is properly covered by tests. --- spec/models/concerns/listable_spec.rb | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/spec/models/concerns/listable_spec.rb b/spec/models/concerns/listable_spec.rb index 65ae1ee1f..6a8efe2b8 100644 --- a/spec/models/concerns/listable_spec.rb +++ b/spec/models/concerns/listable_spec.rb @@ -15,6 +15,15 @@ expect(Workshop.today_and_upcoming).to match_array(future_workshops) end end + + it 'returns workshops ordered by date_and_time ascending (soonest first)' do + Fabricate.times(2, :past_workshop) + workshop_in_3_days = Fabricate(:workshop, date_and_time: 3.days.from_now) + workshop_tomorrow = Fabricate(:workshop, date_and_time: 1.day.from_now) + workshop_in_5_days = Fabricate(:workshop, date_and_time: 5.days.from_now) + + expect(Workshop.today_and_upcoming).to eq([workshop_tomorrow, workshop_in_3_days, workshop_in_5_days]) + end end context '#upcoming' do @@ -24,6 +33,15 @@ expect(Workshop.upcoming).to match_array(future_workshops) end + + it 'returns workshops ordered by date_and_time ascending (soonest first)' do + Fabricate.times(2, :past_workshop) + workshop_in_3_days = Fabricate(:workshop, date_and_time: 3.days.from_now) + workshop_tomorrow = Fabricate(:workshop, date_and_time: 1.day.from_now) + workshop_in_5_days = Fabricate(:workshop, date_and_time: 5.days.from_now) + + expect(Workshop.upcoming).to eq([workshop_tomorrow, workshop_in_3_days, workshop_in_5_days]) + end end context '#past' do