From 5218bd89c61a5a3effe05481795511051b8accc6 Mon Sep 17 00:00:00 2001 From: Raphael Sofaer Date: Tue, 17 May 2011 10:29:07 -0700 Subject: [PATCH] Revert FakeServiceUser work, needs more testing to make sure extra models aren't instantiated. This reverts commit 0a8ce3b9f213d804811e36c87ffccc36feb4421f. This reverts commit f9ef9a4b477a1b1a73a0bd5ab3ce65b7546aec74. This reverts commit 164226a3d77622383a93da2df07dd8dd5a3bc0df. --- app/models/service_user.rb | 27 +------------------ app/models/services/facebook.rb | 12 ++++----- spec/models/service_user_spec.rb | 39 --------------------------- spec/models/services/facebook_spec.rb | 11 +------- 4 files changed, 7 insertions(+), 82 deletions(-) diff --git a/app/models/service_user.rb b/app/models/service_user.rb index 21e40c62a..2f1ce222a 100644 --- a/app/models/service_user.rb +++ b/app/models/service_user.rb @@ -12,7 +12,7 @@ class ServiceUser < ActiveRecord::Base def attach_local_models service_for_uid = Services::Facebook.where(:type => service.type.to_s, :uid => self.uid).first if !service_for_uid.blank? && (service_for_uid.user.person.profile.searchable) - self.person = service_for_uid.user.person + self.person = service_for_uid.user.person else self.person = nil end @@ -28,28 +28,3 @@ class ServiceUser < ActiveRecord::Base :invitation_identifier => self.uid}).first end end - -class FakeServiceUser < HashWithIndifferentAccess - def initialize(row) - columns = ServiceUser.column_names - self.replace Hash[columns.zip(row)] - end - - ServiceUser.column_names.each do |column| - symbol = column.to_sym - define_method symbol do - self[symbol] - end - end - - ServiceUser.reflect_on_all_associations.each do |assoc| - define_method assoc.name do - if associated_id = self[assoc.primary_key_name] - assoc.klass.unscoped.find(associated_id) - else - nil - end - end - end -end - diff --git a/app/models/services/facebook.rb b/app/models/services/facebook.rb index f1c4ea691..49243e12b 100644 --- a/app/models/services/facebook.rb +++ b/app/models/services/facebook.rb @@ -27,16 +27,14 @@ class Services::Facebook < Service Resque.enqueue(Job::UpdateServiceUsers, self.id) end person = Person.arel_table - - query = self.service_users.scoped + service_user = ServiceUser.arel_table if opts[:local] - query = query.joins(:person).where(person[:owner_id].not_eq(nil)) + ServiceUser.joins(:person).where(:service_id => self.id).where(person[:owner_id].not_eq(nil)).all elsif opts[:remote] - query = query.joins(:person).where(person[:owner_id].eq(nil)) + ServiceUser.joins(:person).where(:service_id => self.id).where(person[:owner_id].eq(nil)).all + else + self.service_users end - - result = ServiceUser.connection.execute(query.to_sql).to_a - fakes = result.map{|r| FakeServiceUser.new(r) } end def save_friends diff --git a/spec/models/service_user_spec.rb b/spec/models/service_user_spec.rb index 309ef50d4..d58da22e7 100644 --- a/spec/models/service_user_spec.rb +++ b/spec/models/service_user_spec.rb @@ -106,42 +106,3 @@ JSON end end end - -describe FakeServiceUser do - describe '.initialize' do - before do - @data = [182, "820651", "Maxwell Salzberg", "http://cdn.fn.com/pic1.jpg", 299, 1610, nil, nil, nil, DateTime.parse("Tue May 17 00:31:44 UTC 2011"), DateTime.parse("Tue May 17 00:31:44 UTC 2011")] - @fake = FakeServiceUser.new(@data) - end - it 'takes a mysql row and sets the attr names to their values' do - @fake[:id].should == @data[0] - @fake[:uid].should == @data[1] - @fake[:name].should == @data[2] - @fake[:photo_url].should == @data[3] - @fake[:service_id].should == @data[4] - @fake[:person_id].should == @data[5] - @fake[:contact_id].should == @data[6] - @fake[:request_id].should == @data[7] - @fake[:invitation_id].should == @data[8] - @fake[:created_at].should == @data[9] - @fake[:updated_at].should == @data[10] - end - - it 'has reader methods' do - @fake.photo_url.should == @data[3] - @fake.person_id.should == @data[5] - end - - it 'has association methods' do - person = mock - Person.stub!(:unscoped).and_return(Person) - Person.should_receive(:find).with(@data[5]).and_return person - @fake.person.should == person - end - - it 'does not error on an association with no id' do - @fake[:person_id] = nil - lambda{ @fake.person }.should_not raise_error - end - end -end diff --git a/spec/models/services/facebook_spec.rb b/spec/models/services/facebook_spec.rb index 51a2d77ea..423ed582f 100644 --- a/spec/models/services/facebook_spec.rb +++ b/spec/models/services/facebook_spec.rb @@ -28,7 +28,7 @@ describe Services::Facebook do end context 'finder' do - before do + before do @user2 = Factory.create(:user_with_aspect) @user2_fb_id = '820651' @user2_fb_name = 'Maxwell Salzberg' @@ -70,25 +70,16 @@ JSON end describe '#finder' do - it 'returns an array of non-activerecord objects' do - @service.save_friends - result = @service.finder - result.should be_an(Array) - result.first.should_not be_an ActiveRecord::Base - end - it 'does a syncronous call if it has not been called before' do @service.should_receive(:save_friends) @service.finder end - it 'dispatches a resque job' do Resque.should_receive(:enqueue).with(Job::UpdateServiceUsers, @service.id) su2 = ServiceUser.create(:service => @user2_service, :uid => @user2_fb_id, :name => @user2_fb_name, :photo_url => @user2_fb_photo_url) @service.service_users = [su2] @service.finder end - context 'opts' do it 'only local does not return people who are remote' do @service.save_friends