From fc936493aa29c1534d6eb491d195d7a9b30ea6b4 Mon Sep 17 00:00:00 2001 From: Morgan Roderick Date: Wed, 22 Apr 2026 19:41:57 +0200 Subject: [PATCH] fix: handle nil paginated in fetch_upcoming_events and fetch_past_events --- app/controllers/events_controller.rb | 6 ++++++ spec/controllers/events_controller_spec.rb | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 spec/controllers/events_controller_spec.rb diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb index 48ace625b..5880f08ca 100644 --- a/app/controllers/events_controller.rb +++ b/app/controllers/events_controller.rb @@ -82,7 +82,10 @@ def fetch_upcoming_events events << Event.upcoming.includes(:venue, :sponsors, :sponsorships, :permissions).all sorted = events.compact.flatten.sort_by(&:date_and_time) + return [{}, nil] if sorted.empty? + pagy, paginated = pagy(sorted, items: 20) + paginated ||= [] grouped = paginated.group_by(&:date) decorated = grouped.transform_values { |items| EventPresenter.decorate_collection(items) } @@ -101,7 +104,10 @@ def fetch_past_events events << Event.past.includes(:venue, :sponsors, :sponsorships, :permissions).all sorted = events.compact.flatten.sort_by(&:date_and_time).reverse + return [{}, nil] if sorted.empty? + pagy, paginated = pagy(sorted, items: 20) + paginated ||= [] grouped = paginated.group_by(&:date) decorated = grouped.transform_values { |items| EventPresenter.decorate_collection(items) } diff --git a/spec/controllers/events_controller_spec.rb b/spec/controllers/events_controller_spec.rb new file mode 100644 index 000000000..2d71359ef --- /dev/null +++ b/spec/controllers/events_controller_spec.rb @@ -0,0 +1,17 @@ +RSpec.describe EventsController do + describe '#fetch_upcoming_events' do + context 'when no events exist' do + it 'returns empty hash and nil pagy' do + expect(controller.send(:fetch_upcoming_events)).to eq([{}, nil]) + end + end + end + + describe '#fetch_past_events' do + context 'when no events exist' do + it 'returns empty hash and nil pagy' do + expect(controller.send(:fetch_past_events)).to eq([{}, nil]) + end + end + end +end \ No newline at end of file