correct the validator

This commit is contained in:
Sam 2018-08-15 14:56:24 +10:00
parent 91e0a77a60
commit 38c10a3dc2
2 changed files with 12 additions and 3 deletions

View File

@ -17,14 +17,20 @@ class TopicQuery
Integer === x && x >= 0
end
array_int = lambda do |x|
Array === x && x.length > 0 && x.all? { |i| Integer === i || i.match?(/^-?[0-9]+$/) }
int = lambda do |x|
Integer === x || (String === x && x.match?(/^-?[0-9]+$/))
end
array_int_or_int = lambda do |x|
int.call(x) || (
Array === x && x.length > 0 && x.all?(&int)
)
end
{
max_posts: zero_or_more,
min_posts: zero_or_more,
exclude_category_ids: array_int
exclude_category_ids: array_int_or_int
}
end
end

View File

@ -33,6 +33,9 @@ RSpec.describe ListController do
it "returns 200 for legit requests" do
get "/latest.json?exclude_category_ids%5B%5D=69&exclude_category_ids%5B%5D=70&no_definitions=true&no_subcategories=false&page=1&_=1534296100767"
expect(response.status).to eq(200)
get "/latest.json?exclude_category_ids=-1"
expect(response.status).to eq(200)
end
it "doesn't throw an error with page params as an array" do