Allow no 2 character queries
This commit is contained in:
parent
661d5e41a1
commit
7217bba7e7
2 changed files with 15 additions and 10 deletions
|
|
@ -38,7 +38,7 @@ class Person < ActiveRecord::Base
|
||||||
scope :searchable, joins(:profile).where(:profiles => {:searchable => true})
|
scope :searchable, joins(:profile).where(:profiles => {:searchable => true})
|
||||||
|
|
||||||
def self.search(query, user)
|
def self.search(query, user)
|
||||||
return [] if query.to_s.blank?
|
return [] if query.to_s.blank? || query.to_s.length < 3
|
||||||
|
|
||||||
where_clause = <<-SQL
|
where_clause = <<-SQL
|
||||||
profiles.first_name LIKE ? OR
|
profiles.first_name LIKE ? OR
|
||||||
|
|
|
||||||
|
|
@ -157,29 +157,29 @@ describe Person do
|
||||||
@yevgeniy_dodis = Factory.create(:searchable_person)
|
@yevgeniy_dodis = Factory.create(:searchable_person)
|
||||||
@casey_grippi = Factory.create(:searchable_person)
|
@casey_grippi = Factory.create(:searchable_person)
|
||||||
|
|
||||||
@robert_grimm.profile.first_name = "Robert"
|
@robert_grimm.profile.first_name = "Roberting"
|
||||||
@robert_grimm.profile.last_name = "Grimm"
|
@robert_grimm.profile.last_name = "Grimm"
|
||||||
@robert_grimm.profile.save
|
@robert_grimm.profile.save
|
||||||
@robert_grimm.reload
|
@robert_grimm.reload
|
||||||
|
|
||||||
@eugene_weinstein.profile.first_name = "Eugene"
|
@eugene_weinstein.profile.first_name = "Eugeneing"
|
||||||
@eugene_weinstein.profile.last_name = "Weinstein"
|
@eugene_weinstein.profile.last_name = "Weinstein"
|
||||||
@eugene_weinstein.profile.save
|
@eugene_weinstein.profile.save
|
||||||
@eugene_weinstein.reload
|
@eugene_weinstein.reload
|
||||||
|
|
||||||
@yevgeniy_dodis.profile.first_name = "Yevgeniy"
|
@yevgeniy_dodis.profile.first_name = "Yevgeniying"
|
||||||
@yevgeniy_dodis.profile.last_name = "Dodis"
|
@yevgeniy_dodis.profile.last_name = "Dodis"
|
||||||
@yevgeniy_dodis.profile.save
|
@yevgeniy_dodis.profile.save
|
||||||
@yevgeniy_dodis.reload
|
@yevgeniy_dodis.reload
|
||||||
|
|
||||||
@casey_grippi.profile.first_name = "Casey"
|
@casey_grippi.profile.first_name = "Caseying"
|
||||||
@casey_grippi.profile.last_name = "Grippi"
|
@casey_grippi.profile.last_name = "Grippi"
|
||||||
@casey_grippi.profile.save
|
@casey_grippi.profile.save
|
||||||
@casey_grippi.reload
|
@casey_grippi.reload
|
||||||
end
|
end
|
||||||
it 'is ordered by last name' do
|
it 'is ordered by last name' do
|
||||||
people = Person.search("i", @user)
|
people = Person.search("ing", @user)
|
||||||
people.map{|p| p.name}.should == ["Yevgeniy Dodis", "Robert Grimm", "Casey Grippi", "Eugene Weinstein"]
|
people.map{|p| p.name}.should == [@yevgeniy_dodis, @robert_grimm, @casey_grippi, @eugene_weinstein].map{|p|p.name}
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should return nothing on an empty query' do
|
it 'should return nothing on an empty query' do
|
||||||
|
|
@ -187,8 +187,13 @@ describe Person do
|
||||||
people.empty?.should be true
|
people.empty?.should be true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'should return nothing on a two character query' do
|
||||||
|
people = Person.search("in", @user)
|
||||||
|
people.empty?.should be true
|
||||||
|
end
|
||||||
|
|
||||||
it 'should yield search results on partial names' do
|
it 'should yield search results on partial names' do
|
||||||
people = Person.search("Eu", @user)
|
people = Person.search("Eug", @user)
|
||||||
people.count.should == 1
|
people.count.should == 1
|
||||||
people.first.should == @eugene_weinstein
|
people.first.should == @eugene_weinstein
|
||||||
|
|
||||||
|
|
@ -221,8 +226,8 @@ describe Person do
|
||||||
|
|
||||||
it 'orders by whether the person is friends with the searching user' do
|
it 'orders by whether the person is friends with the searching user' do
|
||||||
@user.activate_contact(@casey_grippi, @user.aspects.first)
|
@user.activate_contact(@casey_grippi, @user.aspects.first)
|
||||||
people = Person.search("i", @user)
|
people = Person.search("ing", @user)
|
||||||
people.map{|p| p.name}.should == ["Casey Grippi", "Yevgeniy Dodis", "Robert Grimm", "Eugene Weinstein"]
|
people.map{|p| p.name}.should == [@casey_grippi, @yevgeniy_dodis, @robert_grimm, @eugene_weinstein].map{|p|p.name}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue