adds validation for custom dates in advanced search

avoids error 500 on invalid dates
This commit is contained in:
Juanjo Bazán
2017-03-27 12:18:45 +02:00
parent ecfad7b053
commit 652aff4e19
3 changed files with 47 additions and 3 deletions

View File

@@ -129,16 +129,16 @@ module CommentableActions
when '4'
1.year.ago
else
Date.parse(params[:advanced_search][:date_min]) rescue nil
Date.parse(params[:advanced_search][:date_min]) rescue 100.years.ago
end
end
def search_finish_date
params[:advanced_search][:date_max].try(:to_date) || Date.today
(params[:advanced_search][:date_max].to_date rescue Date.today) || Date.today
end
def search_date_range
search_start_date.beginning_of_day..search_finish_date.end_of_day
[100.years.ago, search_start_date].max.beginning_of_day..[search_finish_date, Date.today].min.end_of_day
end
def set_search_order

View File

@@ -640,6 +640,28 @@ feature 'Debates' do
end
end
scenario "Search by custom invalid date range", :js do
debate1 = create(:debate, created_at: 2.years.ago)
debate2 = create(:debate, created_at: 3.days.ago)
debate3 = create(:debate, created_at: 9.days.ago)
visit debates_path
click_link "Advanced search"
select "Customized", from: "js-advanced-search-date-min"
fill_in "advanced_search_date_min", with: "9"
fill_in "advanced_search_date_max", with: "444444444"
click_button "Filter"
within("#debates") do
expect(page).to have_css('.debate', count: 3)
expect(page).to have_content(debate1.title)
expect(page).to have_content(debate2.title)
expect(page).to have_content(debate3.title)
end
end
scenario "Search by multiple filters", :js do
ana = create :user, official_level: 1
john = create :user, official_level: 1

View File

@@ -980,6 +980,28 @@ feature 'Proposals' do
end
end
scenario "Search by custom invalid date range", :js do
proposal1 = create(:proposal, created_at: 2.days.ago)
proposal2 = create(:proposal, created_at: 3.days.ago)
proposal3 = create(:proposal, created_at: 9.days.ago)
visit proposals_path
click_link "Advanced search"
select "Customized", from: "js-advanced-search-date-min"
fill_in "advanced_search_date_min", with: 4000.years.ago
fill_in "advanced_search_date_max", with: "wrong date"
click_button "Filter"
expect(page).to have_content("There are 3 citizen proposals")
within("#proposals") do
expect(page).to have_content(proposal1.title)
expect(page).to have_content(proposal2.title)
expect(page).to have_content(proposal3.title)
end
end
scenario "Search by multiple filters", :js do
ana = create :user, official_level: 1
john = create :user, official_level: 1