From 1aac60bee3c5db641d2a98bc10dda45fa583f07c Mon Sep 17 00:00:00 2001
From: Raphael Sofaer <raphael@joindiaspora.com>
Date: Wed, 3 Aug 2011 15:39:23 -0700
Subject: [PATCH] Make sure that not deleting the service_users doesn't leave
 them stale

---
 app/models/services/facebook.rb       |  2 +-
 spec/models/services/facebook_spec.rb | 12 ++++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/app/models/services/facebook.rb b/app/models/services/facebook.rb
index fbef23e8a8..146fc882a8 100644
--- a/app/models/services/facebook.rb
+++ b/app/models/services/facebook.rb
@@ -47,6 +47,6 @@ class Services::Facebook < Service
       su.attach_local_models
       su
     }
-    ServiceUser.import(data)
+    ServiceUser.import(data, :on_duplicate_key_update => [:updated_at, :contact_id, :person_id, :request_id, :invitation_id, :photo_url, :name])
   end
 end
diff --git a/spec/models/services/facebook_spec.rb b/spec/models/services/facebook_spec.rb
index 86e246e592..c5257f2b45 100644
--- a/spec/models/services/facebook_spec.rb
+++ b/spec/models/services/facebook_spec.rb
@@ -71,6 +71,18 @@ JSON
         @service.save_friends
         @service.service_users.first.person.should == @user2.person
       end
+
+      it 'overwrites local model information' do
+        @service.save_friends
+        su = @service.service_users.first
+        su.person.should == @user2.person
+        su.contact.should == nil
+
+        connect_users_with_aspects(alice, @user2)
+        @service.save_friends
+        su.person.should == @user2.person
+        su.reload.contact.should == alice.contact_for(@user2.person)
+      end
     end
 
     describe '#finder' do
-- 
GitLab