Skip to content

Fix 500 on open-ended date range in donations#index#5634

Open
dylangriffinshub wants to merge 1 commit into
rubyforgood:mainfrom
dylangriffinshub:fix-open-ended-date-range-500
Open

Fix 500 on open-ended date range in donations#index#5634
dylangriffinshub wants to merge 1 commit into
rubyforgood:mainfrom
dylangriffinshub:fix-open-ended-date-range-500

Conversation

@dylangriffinshub

Copy link
Copy Markdown

Summary

Fixes #5608 — Bugsnag reported a NoMethodError (undefined method 'to_fs' for nil) on donations#index when a bank enters an open-ended date range in the date picker.

DateRangeHelper#selected_interval only rescued Date.strptime raising an exception. An open-ended range like "August 25, 2025 - " (only the start date filled in) parses without error: .split(" - ") produces a single-element array, so .map only yields one date, and the destructuring start_date, end_date = selected_interval silently leaves end_date as nil. That nil then hits end_date.to_fs(:short) in selected_range_described, causing the 500.

Fix

selected_interval now falls back to the default date range (same "Invalid Date range provided. Reset to default date range" flash notice already used for unparseable ranges) whenever fewer than 2 valid dates are parsed, not only when strptime raises.

Test plan

  • bundle exec rspec spec/helpers/date_range_helper_spec.rb
  • Added a regression spec for an open-ended range in selected_interval, plus a spec asserting selected_range_described no longer raises in that case

DateRangeHelper#selected_interval only rescued Date.strptime raising,
but an open-ended range from the picker (e.g. "August 25, 2025 - ",
with no end date filled in) parses without error into a single-element
array. Destructuring start_date, end_date = selected_interval then
leaves end_date as nil, which blows up later in
selected_range_described's end_date.to_fs(:short) call with a
NoMethodError.

Fixes rubyforgood#5608

Now selected_interval falls back to the default date range (with the
existing "Invalid Date range provided" flash notice) whenever fewer
than 2 valid dates are parsed, not just when strptime raises.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fix 500 on certain date input in donations#index

2 participants