Merge branch 'master' of github.com:diaspora/diaspora

This commit is contained in:
danielvincent 2010-12-03 23:40:25 -08:00
commit c29bc0ce65
6 changed files with 17 additions and 22 deletions

View file

@ -13,14 +13,13 @@ class InvitationsController < Devise::InvitationsController
redirect_to :back
return
end
params[:user][:aspect_id] = params[:user].delete(:aspects)
aspect = params[:user].delete(:aspects)
message = params[:user].delete(:invite_messages)
params[:user][:invite_message] = message unless message == ""
emails = params[:user][:email].split(/, */)
good_emails, bad_emails = emails.partition{|e| e.try(:match, Devise.email_regexp)}
good_emails.each{|e| Resque.enqueue(Jobs::InviteUser, current_user.id, params[:user].merge({:email => e}))}
good_emails.each{|e| Resque.enqueue(Jobs::InviteUser, current_user.id, e, aspect, message)}
if bad_emails.any?
flash[:error] = I18n.t('invitations.create.sent') + good_emails.join(', ') + " "+ I18n.t('invitations.create.rejected') + bad_emails.join(', ')

View file

@ -13,6 +13,7 @@ class Invitation
validates_presence_of :from, :to, :into
def self.invite(opts = {})
return false if opts[:email] == opts[:from].email
existing_user = User.find_by_email(opts[:email])
if existing_user
if opts[:from].contact_for(opts[:from].person)

View file

@ -1,9 +1,9 @@
module Jobs
class InviteUser
@queue = :email
def self.perform(sender_id, params)
def self.perform(sender_id, email, aspect_id, invite_message)
user = User.find(sender_id)
user.invite_user(params)
user.invite_user(email, aspect_id, invite_message)
end
end
end

View file

@ -362,14 +362,13 @@ class User
end
###Invitations############
def invite_user(opts = {})
aspect_id = opts.delete(:aspect_id)
aspect_object = self.aspects.find_by_id(aspect_id)
def invite_user(email, aspect_id, invite_message = "")
aspect_object = Aspect.first(:user_id => self.id, :id => aspect_id)
if aspect_object
Invitation.invite(:email => opts[:email],
Invitation.invite(:email => email,
:from => self,
:into => aspect_object,
:message => opts[:invite_message])
:message => invite_message)
else
false
end

View file

@ -75,7 +75,7 @@ describe InvitationsController do
describe "#update" do
before do
user.invites = 5
@invited_user = user.invite_user(:email => "a@a.com", :aspect_id => user.aspects.first.id)
@invited_user = user.invite_user("a@a.com", user.aspects.first.id)
@accept_params = {:user=>
{:password_confirmation =>"password",
:username=>"josh",

View file

@ -13,32 +13,28 @@ describe User do
let(:aspect2) {inviter_with_3_invites.aspects.create(:name => "Jersey Girls")}
context "creating invites" do
it 'requires an apect' do
inviter.invite_user(:email => "maggie@example.com").should == false
end
it 'requires your aspect' do
inviter.invite_user(:email => "maggie@example.com", :aspect_id => wrong_aspect.id).should == false
inviter.invite_user("maggie@example.com", wrong_aspect.id).should == false
end
it 'calls Invitation.invite' do
Invitation.should_receive(:invite)
inviter.invite_user(:email => @email, :aspect_id => aspect.id)
inviter.invite_user(@email, aspect.id)
end
it 'has an invitation' do
inviter.invite_user(:email => "joe@example.com", :aspect_id => aspect.id).invitations_to_me.count.should == 1
inviter.invite_user("joe@example.com", aspect.id).invitations_to_me.count.should == 1
end
it 'creates it with an email' do
inviter.invite_user(:email => "joe@example.com", :aspect_id => aspect.id).email.should == "joe@example.com"
inviter.invite_user("joe@example.com", aspect.id).email.should == "joe@example.com"
end
it 'throws if you try to add someone you"re connected to' do
connect_users(inviter, aspect, another_user, wrong_aspect)
inviter.reload
proc{inviter.invite_user(:email => another_user.email, :aspect_id => aspect.id)}.should raise_error /already connected/
proc{inviter.invite_user(another_user.email, aspect.id)}.should raise_error /already connected/
end
end
@ -46,8 +42,8 @@ describe User do
context "limit on invites" do
it 'does not invite people I already invited' do
inviter_with_3_invites.invite_user(:email => "email1@example.com", :aspect_id => aspect2.id)
proc{inviter_with_3_invites.invite_user(:email => "email1@example.com", :aspect_id => aspect2.id)}.should raise_error /You already invited this person/
inviter_with_3_invites.invite_user("email1@example.com", aspect2.id)
proc{inviter_with_3_invites.invite_user("email1@example.com", aspect2.id)}.should raise_error /You already invited this person/
end
end