From 2c1c5df2819513df92916137413b0357c10f367c Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 10:24:59 -0700 Subject: [PATCH] Moved search specs, renamed method --- app/controllers/people_controller.rb | 2 +- app/models/person.rb | 6 ++- spec/controllers/people_controller_spec.rb | 47 +------------------- spec/controllers/requests_controller_spec.rb | 15 +++++++ spec/models/person_spec.rb | 42 +++++++++++++++++ 5 files changed, 64 insertions(+), 48 deletions(-) create mode 100644 spec/controllers/requests_controller_spec.rb diff --git a/app/controllers/people_controller.rb b/app/controllers/people_controller.rb index e161f6acd..f53048914 100644 --- a/app/controllers/people_controller.rb +++ b/app/controllers/people_controller.rb @@ -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 diff --git a/app/models/person.rb b/app/models/person.rb index afd48bea5..5ce5394bd 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -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 diff --git a/spec/controllers/people_controller_spec.rb b/spec/controllers/people_controller_spec.rb index f0cea0279..f448f9f36 100644 --- a/spec/controllers/people_controller_spec.rb +++ b/spec/controllers/people_controller_spec.rb @@ -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 diff --git a/spec/controllers/requests_controller_spec.rb b/spec/controllers/requests_controller_spec.rb new file mode 100644 index 000000000..579ee620e --- /dev/null +++ b/spec/controllers/requests_controller_spec.rb @@ -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 diff --git a/spec/models/person_spec.rb b/spec/models/person_spec.rb index c062d396b..44ca3c834 100644 --- a/spec/models/person_spec.rb +++ b/spec/models/person_spec.rb @@ -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