FIX: Search by topic_id should not be restricted by SiteSetting.min_search_term_length.

This commit is contained in:
Guo Xiang Tan 2017-07-26 09:51:44 +09:00
parent 96267f0845
commit e3ac6585bd
3 changed files with 39 additions and 21 deletions

View File

@ -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

View File

@ -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 }

View File

@ -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