Merge branch 'master' of github.com:diaspora/diaspora_rails
This commit is contained in:
commit
5761d5db36
5 changed files with 64 additions and 48 deletions
|
|
@ -6,7 +6,7 @@ class PeopleController < ApplicationController
|
|||
@people = current_user.friends.paginate :page => params[:page], :order => 'created_at DESC'
|
||||
render :index
|
||||
else
|
||||
@people = Person.search_for_friends(params[:q])
|
||||
@people = Person.search(params[:q])
|
||||
render :json => @people.to_json(:only => :_id)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -35,8 +35,10 @@ class Person
|
|||
after_destroy :remove_all_traces
|
||||
|
||||
|
||||
def self.search_for_friends(query)
|
||||
Person.all('$where' => "function() { return this.profile.first_name.match(/^#{query}/i) || this.profile.last_name.match(/^#{query}/i); }")
|
||||
def self.search(query)
|
||||
Person.all('$where' => "function() { return this.email.match(/^#{query}/i) ||
|
||||
this.profile.first_name.match(/^#{query}/i) ||
|
||||
this.profile.last_name.match(/^#{query}/i); }")
|
||||
end
|
||||
|
||||
def real_name
|
||||
|
|
|
|||
|
|
@ -3,59 +3,16 @@ require File.dirname(__FILE__) + '/../spec_helper'
|
|||
describe PeopleController do
|
||||
render_views
|
||||
before do
|
||||
@user = Factory.create(:user, :profile => Profile.new( :first_name => "bob", :last_name => "smith"))
|
||||
@user = Factory.create(:user)
|
||||
request.env['warden'] = mock_model(Warden, :authenticate? => @user, :authenticate! => @user, :authenticate => @user)
|
||||
|
||||
sign_in :user, @user
|
||||
end
|
||||
|
||||
it "index should yield search results for substring of person name" do
|
||||
friend_one = Factory.create(:person)
|
||||
friend_two = Factory.create(:person)
|
||||
friend_three = Factory.create(:person)
|
||||
friend_four = Factory.create(:person)
|
||||
|
||||
friend_one.profile.first_name = "Robert"
|
||||
friend_one.profile.last_name = "Grimm"
|
||||
friend_one.profile.save
|
||||
|
||||
friend_two.profile.first_name = "Eugene"
|
||||
friend_two.profile.last_name = "Weinstein"
|
||||
friend_two.save
|
||||
|
||||
friend_three.profile.first_name = "Yevgeniy"
|
||||
friend_three.profile.last_name = "Dodis"
|
||||
friend_three.save
|
||||
|
||||
friend_four.profile.first_name = "Casey"
|
||||
friend_four.profile.last_name = "Grippi"
|
||||
friend_four.save
|
||||
|
||||
|
||||
puts Person.friends.count
|
||||
Person.should_receive(:search)
|
||||
|
||||
get :index, :q => "Eu"
|
||||
|
||||
|
||||
assigns[:people].include?(friend_two).should == true
|
||||
assigns[:people].include?(friend_one).should == false
|
||||
assigns[:people].include?(friend_three).should == false
|
||||
assigns[:people].include?(friend_four).should == false
|
||||
|
||||
get :index, :q => "Wei"
|
||||
assigns[:people].include?(friend_two).should == true
|
||||
assigns[:people].include?(friend_one).should == false
|
||||
assigns[:people].include?(friend_three).should == false
|
||||
assigns[:people].include?(friend_four).should == false
|
||||
|
||||
get :index, :q => "Gri"
|
||||
assigns[:people].include?(friend_one).should == true
|
||||
assigns[:people].include?(friend_four).should == true
|
||||
assigns[:people].include?(friend_two).should == false
|
||||
assigns[:people].include?(friend_three).should == false
|
||||
|
||||
get :index
|
||||
assigns[:people].should == Person.friends.all
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
15
spec/controllers/requests_controller_spec.rb
Normal file
15
spec/controllers/requests_controller_spec.rb
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
require File.dirname(__FILE__) + '/../spec_helper'
|
||||
include ApplicationHelper
|
||||
include RequestsHelper
|
||||
describe RequestsController do
|
||||
before do
|
||||
@tom = Redfinger.finger('tom@tom.joindiaspora.com')
|
||||
@evan = Redfinger.finger('evan@status.net')
|
||||
@max = Redfinger.finger('mbs348@gmail.com')
|
||||
end
|
||||
it 'should return the correct tag and url for a given address' do
|
||||
relationship_flow('tom@tom.joindiaspora.com')[:friend].include?("receive/user").should == true
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
|
@ -96,5 +96,47 @@ describe Person do
|
|||
Person.all.count.should == 3
|
||||
end
|
||||
end
|
||||
describe 'searching' do
|
||||
before do
|
||||
@friend_one = Factory.create(:person)
|
||||
@friend_two = Factory.create(:person)
|
||||
@friend_three = Factory.create(:person)
|
||||
@friend_four = Factory.create(:person)
|
||||
|
||||
@friend_one.profile.first_name = "Robert"
|
||||
@friend_one.profile.last_name = "Grimm"
|
||||
@friend_one.profile.save
|
||||
|
||||
@friend_two.profile.first_name = "Eugene"
|
||||
@friend_two.profile.last_name = "Weinstein"
|
||||
@friend_two.save
|
||||
|
||||
@friend_three.profile.first_name = "Yevgeniy"
|
||||
@friend_three.profile.last_name = "Dodis"
|
||||
@friend_three.save
|
||||
|
||||
@friend_four.profile.first_name = "Casey"
|
||||
@friend_four.profile.last_name = "Grippi"
|
||||
@friend_four.save
|
||||
end
|
||||
it 'should yield search results on partial names' do
|
||||
people = Person.search("Eu")
|
||||
people.include?(@friend_two).should == true
|
||||
people.include?(@friend_one).should == false
|
||||
people.include?(@friend_three).should == false
|
||||
people.include?(@friend_four).should == false
|
||||
|
||||
people = Person.search("Wei")
|
||||
people.include?(@friend_two).should == true
|
||||
people.include?(@friend_one).should == false
|
||||
people.include?(@friend_three).should == false
|
||||
people.include?(@friend_four).should == false
|
||||
|
||||
people = Person.search("Gri")
|
||||
people.include?(@friend_one).should == true
|
||||
people.include?(@friend_four).should == true
|
||||
people.include?(@friend_two).should == false
|
||||
people.include?(@friend_three).should == false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in a new issue