adds validation for custom dates in advanced search
avoids error 500 on invalid dates
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user