From 9e22f4a6e6f7af66ebfbd5d8a11cb1b5718d382c Mon Sep 17 00:00:00 2001 From: zhitomirskiyi Date: Wed, 26 Jan 2011 16:31:34 -0800 Subject: [PATCH] checks if you already invited the person --- app/models/services/facebook.rb | 8 ++++++++ app/views/services/finder.html.haml | 2 ++ spec/models/services/facebook_spec.rb | 19 ++++++++++++++++++- 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/app/models/services/facebook.rb b/app/models/services/facebook.rb index 1f3f965e9..9fa6b3180 100644 --- a/app/models/services/facebook.rb +++ b/app/models/services/facebook.rb @@ -25,6 +25,14 @@ class Services::Facebook < Service data_h[d['id']] = {:name => d['name']} end + invitation_objects = Invitation.joins(:recipient).where(:sender_id => self.user_id, + :users => {:invitation_service => 'facebook', + :invitation_identifier => data_h.keys}) + + invitation_objects.each do |inv| + data_h[inv.recipient.invitation_identifier][:invitation] = true + end + service_objects = Services::Facebook.where(:uid => data_h.keys).includes(:user => :person) service_objects.each do |s| data_h[s.uid][:person] = s.user.person diff --git a/app/views/services/finder.html.haml b/app/views/services/finder.html.haml index 1d5f17c10..e3ecfce12 100644 --- a/app/views/services/finder.html.haml +++ b/app/views/services/finder.html.haml @@ -28,6 +28,8 @@ :id => friend[:person].id}, :class => 'button', :rel => 'facebox' + - elsif friend[:invitation] + = t('invitations.new.already_invited') - else = form_tag service_inviter_path do = select_tag(:aspect_id, options_from_collection_for_select(@all_aspects, 'id', 'name')) diff --git a/spec/models/services/facebook_spec.rb b/spec/models/services/facebook_spec.rb index d49e7da5b..1e4e53ed2 100644 --- a/spec/models/services/facebook_spec.rb +++ b/spec/models/services/facebook_spec.rb @@ -74,7 +74,24 @@ JSON connect_users(@user, @user.aspects.first, @user2, @user2.aspects.first) @service.finder.values.first[:contact].should == @user.reload.contact_for(@user2.person) end - end + context 'already invited' do + before do + @user2.invitation_service = 'facebook' + @user2.invitation_identifier = @user2_fb_id + @user2.save! + end + it 'contains an invitation if invited' do + @inv = Invitation.create(:sender => @user, :recipient => @user2, :aspect => @user.aspects.first) + @service.finder.values.first[:invitation].should be_true + end + it 'does not find the user with a wrong identifier' do + @user2.invitation_identifier = 'dsaofhnadsoifnsdanf' + @user2.save + @inv = Invitation.create(:sender => @user, :recipient => @user2, :aspect => @user.aspects.first) + @service.finder.values.first[:invitation].should be_nil + end + end + end end end