diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb index 1c29e71fa55..60d63488aa0 100644 --- a/app/controllers/search_controller.rb +++ b/app/controllers/search_controller.rb @@ -52,7 +52,8 @@ class SearchController < ApplicationController search_args[:include_blurbs] = params[:include_blurbs] == "true" if params[:include_blurbs].present? search_args[:search_for_id] = true if params[:search_for_id].present? - context,type = lookup_search_context + context, type = lookup_search_context + if context search_args[:search_context] = context search_args[:type_filter] = type if type diff --git a/lib/search.rb b/lib/search.rb index 2f2dfd64207..0edd4eecf7c 100644 --- a/lib/search.rb +++ b/lib/search.rb @@ -201,7 +201,6 @@ class Search # Query a term def execute - if SiteSetting.log_search_queries? status, search_log_id = SearchLog.log( term: @term, @@ -212,7 +211,7 @@ class Search @results.search_log_id = search_log_id unless status == :error end - unless @filters.present? + unless @filters.present? || @opts[:search_for_id] min_length = @opts[:min_search_term_length] || SiteSetting.min_search_term_length terms = (@term || '').split(/\s(?=(?:[^"]|"[^"]*")*$)/).reject {|t| t.length < min_length } diff --git a/spec/controllers/search_controller_spec.rb b/spec/controllers/search_controller_spec.rb index b83c6894b8c..2f6ea932f47 100644 --- a/spec/controllers/search_controller_spec.rb +++ b/spec/controllers/search_controller_spec.rb @@ -37,25 +37,43 @@ describe SearchController do expect(data['users'][0]['id']).to eq(user.id) end - it "can search for id" do - user = Fabricate(:user) - my_post = Fabricate(:post, raw: "#{user.username} is a cool person") - xhr( - :get, - :query, - term: my_post.topic_id, - type_filter: 'topic', - search_for_id: true - ) - expect(response).to be_success - data = JSON.parse(response.body) - unless (data && data['topics'] && data['topics'][0] && data['topics'][0]['id']) - puts "FLAKY TEST" - p data - p my_post.topic - p my_post + context 'searching by topic id' do + it 'should not be restricted by minimum search term length' do + SiteSetting.min_search_term_length = 20000 + + post = Fabricate(:post) + + xhr( + :get, + :query, + term: post.topic_id, + type_filter: 'topic', + search_for_id: true + ) + + expect(response).to be_success + data = JSON.parse(response.body) + + expect(data['topics'][0]['id']).to eq(post.topic_id) + end + + it "should return the right result" do + user = Fabricate(:user) + my_post = Fabricate(:post, raw: "#{user.username} is a cool person") + + xhr( + :get, + :query, + term: my_post.topic_id, + type_filter: 'topic', + search_for_id: true + ) + + expect(response).to be_success + data = JSON.parse(response.body) + + expect(data['topics'][0]['id']).to eq(my_post.topic_id) end - expect(data['topics'][0]['id']).to eq(my_post.topic_id) end end