From e0fb8a08cba45b4042e5a0a7d19145112ec4aa08 Mon Sep 17 00:00:00 2001
From: Maxwell Salzberg <maxwell@joindiaspora.com>
Date: Wed, 17 Aug 2011 14:56:31 -0700
Subject: [PATCH] set the user email if inviting by email

---
 app/models/invitation.rb |  3 ++-
 app/models/user.rb       |  2 +-
 spec/models/user_spec.rb | 21 +++++++++++++++++++++
 3 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/app/models/invitation.rb b/app/models/invitation.rb
index 992e3f6beb..4ccbc3322e 100644
--- a/app/models/invitation.rb
+++ b/app/models/invitation.rb
@@ -71,7 +71,8 @@ class Invitation < ActiveRecord::Base
   # @return [Invitation] self
   def send!
     self.attach_recipient!
-    
+   puts self.recipient.inspect
+
     # Sets an instance variable in User (set by devise invitable)
     # This determines whether an email should be sent to the recipient.
     recipient.skip_invitation = self.skip_email?
diff --git a/app/models/user.rb b/app/models/user.rb
index c595ec7269..733de5159d 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -92,7 +92,7 @@ class User < ActiveRecord::Base
     user = User.new
     user.generate_keys
     user.send(:generate_invitation_token)
-    #user.invitations_to_me << invitation
+    user.email = invitation.identifier if invitation.service == 'email'
     # we need to make a custom validator here to make this safer
     user.save(:validate => false)
     user
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 7c472fd6cf..2834707367 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -367,6 +367,27 @@ describe User do
     end
   end
 
+  describe '.find_or_create_by_invitation' do
+    
+  end
+
+  describe '.create_from_invitation!' do
+    before do
+      @identifier = 'max@foobar.com'
+      @inv = Factory.build(:invitation, :admin => true, :service => 'email', :identifier => @identifier)
+      @user = User.create_from_invitation!(@inv) 
+    end
+
+    it 'creates a persisted user' do
+      @user.should be_persisted
+    end
+
+    it 'sets the email if the service is email' do
+      @user.email.should == @inv.identifier
+    end
+
+  end
+
   describe 'update_user_preferences' do
     before do
       @pref_count = UserPreference::VALID_EMAIL_TYPES.count
-- 
GitLab