From 6e2c89d9d3d2554050551ad82f3d701a9184c86f Mon Sep 17 00:00:00 2001 From: Augusto Xavier Date: Mon, 22 Jun 2026 06:46:36 -0300 Subject: [PATCH] Fix 500 on open-ended date input in donations#index (5608) --- app/helpers/date_range_helper.rb | 13 +++++-------- spec/helpers/date_range_helper_spec.rb | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/app/helpers/date_range_helper.rb b/app/helpers/date_range_helper.rb index 4327f6cdb7..d6c51e1e2c 100644 --- a/app/helpers/date_range_helper.rb +++ b/app/helpers/date_range_helper.rb @@ -34,14 +34,11 @@ def default_date end def selected_interval - date_range_params.split(" - ").map do |d| - Date.strptime(d, "%B %d, %Y") - rescue - flash.now[:notice] = "Invalid Date range provided. Reset to default date range" - return default_date.split(" - ").map do |d| - Date.strptime(d.to_s, "%B %d, %Y") - end - end + start_date, end_date = date_range_params.split(" - ") + [Date.strptime(start_date.to_s, "%B %d, %Y"), Date.strptime(end_date.to_s, "%B %d, %Y")] + rescue + flash.now[:notice] = "Invalid Date range provided. Reset to default date range" + default_date.split(" - ").map { |d| Date.strptime(d, "%B %d, %Y") } end def selected_range diff --git a/spec/helpers/date_range_helper_spec.rb b/spec/helpers/date_range_helper_spec.rb index 89bfb33a1e..a739511751 100644 --- a/spec/helpers/date_range_helper_spec.rb +++ b/spec/helpers/date_range_helper_spec.rb @@ -31,6 +31,21 @@ def initialize(params = {}, flash = nil) end end + context "with an open-ended date range" do + it "falls back to default date range and sets a flash notice" do + open_ended_range = "August 25, 2025 - " + flash_now = {} + flash_double = double("flash", now: flash_now) + helper = dummy_class.new({filters: {date_range: open_ended_range}}, flash_double) + + interval = helper.selected_interval + default_start, default_end = helper.default_date.split(" - ").map { |d| Date.strptime(d, "%B %d, %Y") } + + expect(interval).to eq([default_start, default_end]) + expect(flash_now[:notice]).to eq("Invalid Date range provided. Reset to default date range") + end + end + context "with an invalid date range" do it "falls back to default date range and sets a flash notice" do invalid_range = "November 08 - February 08"