diff --git a/app/logical/autocomplete_service.rb b/app/logical/autocomplete_service.rb index 5cf34cc6a..1eada7160 100644 --- a/app/logical/autocomplete_service.rb +++ b/app/logical/autocomplete_service.rb @@ -79,17 +79,12 @@ class AutocompleteService # # @return [Array] the autocomplete results def autocomplete_tag_query - if parsed_query.tag_names.one? - tag = parsed_query.tag_names.first - autocomplete_tag(tag) - elsif parsed_query.wildcards.one? - wildcard = parsed_query.wildcards.first - autocomplete_tag(wildcard.name) - elsif parsed_query.metatags.one? + if parsed_query.metatags.one? metatag = parsed_query.metatags.first autocomplete_metatag(metatag.name, metatag.value) else - [] + tag = Tag.normalize_name(query) + autocomplete_tag(tag) end end @@ -351,7 +346,7 @@ class AutocompleteService end def parsed_query - PostQuery.new(query.delete_prefix("-").delete_prefix("~")) + PostQuery.new(query) end memoize :autocomplete_results, :parsed_query diff --git a/test/functional/autocomplete_controller_test.rb b/test/functional/autocomplete_controller_test.rb index 32aafb45a..b8d0257fb 100644 --- a/test/functional/autocomplete_controller_test.rb +++ b/test/functional/autocomplete_controller_test.rb @@ -16,6 +16,8 @@ class AutocompleteControllerTest < ActionDispatch::IntegrationTest context "index action" do setup do create(:tag, name: "azur_lane") + create(:tag, name: "android") + create(:tag, name: "original") end should "work for opensearch queries" do @@ -27,8 +29,6 @@ class AutocompleteControllerTest < ActionDispatch::IntegrationTest should "work for tag queries" do assert_autocomplete_equals(["azur_lane"], "azur", "tag_query") - assert_autocomplete_equals(["azur_lane"], "-azur", "tag_query") - assert_autocomplete_equals(["azur_lane"], "~azur", "tag_query") assert_autocomplete_equals(["azur_lane"], "AZUR", "tag_query") assert_autocomplete_equals(["rating:sensitive"], "rating:s", "tag_query") @@ -42,6 +42,11 @@ class AutocompleteControllerTest < ActionDispatch::IntegrationTest assert_equal([], response.parsed_body) end + should "work for the AND and OR keywords" do + assert_autocomplete_equals(["android"], "and", "tag_query") + assert_autocomplete_equals(["original"], "or", "tag_query") + end + should "not set session cookies when the response is publicly cached" do get autocomplete_index_path(search: { query: "azur", type: "tag_query" }), as: :json