M app/services/account_search_service.rb => app/services/account_search_service.rb +6 -2
@@ 133,8 133,12 @@ class AccountSearchService < BaseService
end
def must_clause
- fields = %w(username username.* display_name display_name.*)
- fields << 'text' << 'text.*' if options[:use_searchable_text]
+ if options[:start_with_hashtag]
+ fields = %w(text text.*)
+ else
+ fields = %w(username username.* display_name display_name.*)
+ fields << 'text' << 'text.*' if options[:use_searchable_text]
+ end
[
{
M app/services/search_service.rb => app/services/search_service.rb +4 -3
@@ 33,7 33,8 @@ class SearchService < BaseService
resolve: @resolve,
offset: @offset,
use_searchable_text: true,
- following: @following
+ following: @following,
+ start_with_hashtag: @query.start_with?('#')
)
end
@@ 91,11 92,11 @@ class SearchService < BaseService
def full_text_searchable?
return false unless Chewy.enabled?
- statuses_search? && !@account.nil? && !((@query.start_with?('#') || @query.include?('@')) && !@query.include?(' '))
+ statuses_search? && !@account.nil? && !(@query.include?('@') && !@query.include?(' '))
end
def account_searchable?
- account_search? && !(@query.start_with?('#') || (@query.include?('@') && @query.include?(' ')))
+ account_search? && !(@query.include?('@') && @query.include?(' '))
end
def hashtag_searchable?
M spec/services/search_service_spec.rb => spec/services/search_service_spec.rb +1 -10
@@ 68,7 68,7 @@ describe SearchService, type: :service do
allow(AccountSearchService).to receive(:new).and_return(service)
results = subject.call(query, nil, 10)
- expect(service).to have_received(:call).with(query, nil, limit: 10, offset: 0, resolve: false, use_searchable_text: true, following: false)
+ expect(service).to have_received(:call).with(query, nil, limit: 10, offset: 0, resolve: false, start_with_hashtag: false, use_searchable_text: true, following: false)
expect(results).to eq empty_results.merge(accounts: [account])
end
end
@@ 92,15 92,6 @@ describe SearchService, type: :service do
expect(Tag).to_not have_received(:search_for)
expect(results).to eq empty_results
end
-
- it 'does not include account when starts with # character' do
- query = '#tag'
- allow(AccountSearchService).to receive(:new)
-
- results = subject.call(query, nil, 10)
- expect(AccountSearchService).to_not have_received(:new)
- expect(results).to eq empty_results
- end
end
end
end