autocomplete: fix exception when completing saved search labels.
Fix an exception that was thrown when trying to autocomplete saved search labels (e.g. `search:all`) as an anonymous user. This was a pre-existing bug.
This commit is contained in:
@@ -155,7 +155,8 @@ class AutocompleteService
|
||||
end
|
||||
|
||||
def autocomplete_saved_search_label(string)
|
||||
labels = SavedSearch.search_labels(current_user.id, label: string).take(limit)
|
||||
string = "*" + string + "*" unless string.include?("*")
|
||||
labels = current_user.saved_searches.labels_like(string).take(limit)
|
||||
|
||||
labels.map do |label|
|
||||
{ label: label.tr("_", " "), value: label }
|
||||
|
||||
@@ -63,6 +63,14 @@ class SavedSearch < ApplicationRecord
|
||||
.gsub(/[[:space:]]/, "_")
|
||||
end
|
||||
|
||||
def all_labels
|
||||
select(Arel.sql("distinct unnest(labels) as label")).order(:label)
|
||||
end
|
||||
|
||||
def labels_like(label)
|
||||
all_labels.select { |ss| ss.label.ilike?(label) }.map(&:label)
|
||||
end
|
||||
|
||||
def search_labels(user_id, params)
|
||||
labels = labels_for(user_id)
|
||||
|
||||
|
||||
@@ -61,8 +61,10 @@ class AutocompleteServiceTest < ActiveSupport::TestCase
|
||||
create(:saved_search, query: "bkub", labels: ["artists"], user: user)
|
||||
|
||||
assert_autocomplete_equals(["artists"], "art", :saved_search_label, current_user: user)
|
||||
assert_autocomplete_equals([], "art", :saved_search_label, current_user: User.anonymous)
|
||||
|
||||
assert_autocomplete_equals(["search:artists"], "search:art", :tag_query, current_user: user)
|
||||
assert_autocomplete_equals([], "search:art", :saved_search_label, current_user: User.anonymous)
|
||||
end
|
||||
|
||||
should "autocomplete single tags" do
|
||||
|
||||
Reference in New Issue
Block a user