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'
|
when '4'
|
||||||
1.year.ago
|
1.year.ago
|
||||||
else
|
else
|
||||||
Date.parse(params[:advanced_search][:date_min]) rescue nil
|
Date.parse(params[:advanced_search][:date_min]) rescue 100.years.ago
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def search_finish_date
|
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
|
end
|
||||||
|
|
||||||
def search_date_range
|
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
|
end
|
||||||
|
|
||||||
def set_search_order
|
def set_search_order
|
||||||
|
|||||||
@@ -640,6 +640,28 @@ feature 'Debates' do
|
|||||||
end
|
end
|
||||||
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
|
scenario "Search by multiple filters", :js do
|
||||||
ana = create :user, official_level: 1
|
ana = create :user, official_level: 1
|
||||||
john = create :user, official_level: 1
|
john = create :user, official_level: 1
|
||||||
|
|||||||
@@ -980,6 +980,28 @@ feature 'Proposals' do
|
|||||||
end
|
end
|
||||||
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
|
scenario "Search by multiple filters", :js do
|
||||||
ana = create :user, official_level: 1
|
ana = create :user, official_level: 1
|
||||||
john = create :user, official_level: 1
|
john = create :user, official_level: 1
|
||||||
|
|||||||
Reference in New Issue
Block a user