Skip to content

Commit 3d890ef

Browse files
authored
Merge pull request #2011 from codidact/0valt/2010/array-search-params
2 parents 61ca027 + 60bfc1f commit 3d890ef

2 files changed

Lines changed: 19 additions & 2 deletions

File tree

app/helpers/search_helper.rb

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,11 +114,11 @@ def params_to_qualifiers(params)
114114
filter_qualifiers.append({ param: :source, value: params[:source].to_sym })
115115
end
116116

117-
if params[:include_tags]&.all? { |id| id.match? valid_value[:integer] }
117+
if valid_tags_list?(params[:include_tags])
118118
filter_qualifiers.append({ param: :include_tags, tag_ids: params[:include_tags] })
119119
end
120120

121-
if params[:exclude_tags]&.all? { |id| id.match? valid_value[:integer] }
121+
if valid_tags_list?(params[:exclude_tags])
122122
filter_qualifiers.append({ param: :exclude_tags, tag_ids: params[:exclude_tags] })
123123
end
124124

@@ -244,6 +244,13 @@ def qualifiers_to_sql(qualifiers, query, user)
244244
query
245245
end
246246

247+
# Is a given param a valid list of tags?
248+
# @param param [String, Array<String>, nil] parameter to check
249+
# @return [Boolean] check result
250+
def valid_tags_list?(param)
251+
param.is_a?(Array) && param&.all? { |id| id.match?(/^\d+$/) }
252+
end
253+
247254
# Is a given param a valid source type?
248255
# @param param [String, Symbol, nil] parameter to check
249256
# @return [Boolean] check result

test/helpers/search_helper_test.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,16 @@ class SearchHelperTest < ActionView::TestCase
236236
assert_not(posts.any? { |p| p.category.id == admin_category.id })
237237
end
238238

239+
test 'valid_tags_list? should correctly determine if the param is valid' do
240+
[[], ['42'], ['7', '747']].each do |valid|
241+
assert valid_tags_list?(valid)
242+
end
243+
244+
['', '[\"42\"]', nil].each do |invalid|
245+
assert_not valid_tags_list?(invalid)
246+
end
247+
end
248+
239249
test 'valid_source_type? should correctly determine if the param is valid' do
240250
SearchHelper::SOURCE_TYPES.each do |type|
241251
assert valid_source_type?(type)

0 commit comments

Comments
 (0)