Search cleanup (#1333)
* Clean up SQL output in Tag and Account search methods * Add basic coverage for Tag.search_for * Add coverage for Account.search_for * Add coverage for Account.advanced_search_for
This commit is contained in:
parent
71706f21c2
commit
388ec0d5b6
4 changed files with 74 additions and 8 deletions
|
@ -170,6 +170,61 @@ RSpec.describe Account, type: :model do
|
|||
end
|
||||
end
|
||||
|
||||
describe '.search_for' do
|
||||
before do
|
||||
@match = Fabricate(
|
||||
:account,
|
||||
display_name: "Display Name",
|
||||
username: "username",
|
||||
domain: "example.com"
|
||||
)
|
||||
_missing = Fabricate(
|
||||
:account,
|
||||
display_name: "Missing",
|
||||
username: "missing",
|
||||
domain: "missing.com"
|
||||
)
|
||||
end
|
||||
|
||||
it 'finds accounts with matching display_name' do
|
||||
results = Account.search_for("display")
|
||||
expect(results).to eq [@match]
|
||||
end
|
||||
|
||||
it 'finds accounts with matching username' do
|
||||
results = Account.search_for("username")
|
||||
expect(results).to eq [@match]
|
||||
end
|
||||
|
||||
it 'finds accounts with matching domain' do
|
||||
results = Account.search_for("example")
|
||||
expect(results).to eq [@match]
|
||||
end
|
||||
|
||||
it 'ranks multiple matches higher' do
|
||||
account = Fabricate(
|
||||
:account,
|
||||
username: "username",
|
||||
display_name: "username"
|
||||
)
|
||||
results = Account.search_for("username")
|
||||
expect(results).to eq [account, @match]
|
||||
end
|
||||
end
|
||||
|
||||
describe '.advanced_search_for' do
|
||||
it 'ranks followed accounts higher' do
|
||||
account = Fabricate(:account)
|
||||
match = Fabricate(:account, username: "Matching")
|
||||
followed_match = Fabricate(:account, username: "Matcher")
|
||||
Fabricate(:follow, account: account, target_account: followed_match)
|
||||
|
||||
results = Account.advanced_search_for("match", account)
|
||||
expect(results).to eq [followed_match, match]
|
||||
expect(results.first.rank).to be > results.last.rank
|
||||
end
|
||||
end
|
||||
|
||||
describe '.find_local' do
|
||||
before do
|
||||
Fabricate(:account, username: 'Alice')
|
||||
|
|
|
@ -12,4 +12,15 @@ RSpec.describe Tag, type: :model do
|
|||
expect(subject.match('https://en.wikipedia.org/wiki/Ghostbusters_(song)#Lawsuit')).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
describe '.search_for' do
|
||||
it 'finds tag records with matching names' do
|
||||
tag = Fabricate(:tag, name: "match")
|
||||
_miss_tag = Fabricate(:tag, name: "miss")
|
||||
|
||||
results = Tag.search_for("match")
|
||||
|
||||
expect(results).to eq [tag]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue