accepting an invitation correctly adds the request to the user

This commit is contained in:
zhitomirskiyi 2010-11-23 18:58:09 -08:00
parent 3a8c82c7b4
commit 9ca54a2282
3 changed files with 39 additions and 10 deletions

View file

@ -41,9 +41,8 @@ class InvitationsController < Devise::InvitationsController
def update
begin
user = User.find_by_invitation_token(params[:user][:invitation_token])
user.accept_invitation!(params[:user])
user.seed_aspects
user.save
user.accept_invitation!(params[:user])
rescue MongoMapper::DocumentNotValid => e
user = nil
flash[:error] = e.message

View file

@ -350,7 +350,8 @@ class User
self.person.save!
self.save!
invitations_to_me.each{|invitation| invitation.to_request!}
self.reload # Because to_request adds a request and saves elsewhere
self
end
end

View file

@ -11,18 +11,22 @@ describe InvitationsController do
let!(:user) {make_user}
let!(:aspect){user.aspects.create(:name => "WIN!!")}
before do
request.env["devise.mapping"] = Devise.mappings[:user]
user.invites = 5
sign_in :user, user
@invite = {:invite_messages=>"test", :aspects=> aspect.id.to_s, :email=>"abc@example.com"}
@controller.stub!(:current_user).and_return(user)
request.env["HTTP_REFERER"]= 'http://test.host/cats/foo'
end
describe "#create" do
before do
user.invites = 5
sign_in :user, user
@invite = {:invite_messages=>"test", :aspects=> aspect.id.to_s, :email=>"abc@example.com"}
@controller.stub!(:current_user).and_return(user)
request.env["HTTP_REFERER"]= 'http://test.host/cats/foo'
end
it 'invites the requested user' do
user.should_receive(:invite_user).and_return(make_user)
post :create, :user => @invite
@ -72,5 +76,30 @@ describe InvitationsController do
response.should redirect_to("http://test.host/cats/foo")
end
end
describe "#update" do
before do
user.invites = 5
invited_user = user.invite_user(:email => "a@a.com", :aspect_id => user.aspects.first.id)
@accept_params = {"user"=>{"password_confirmation"=>"password", "username"=>"josh",
"password"=>"password", "invitation_token" => invited_user.invitation_token}}
end
it 'creates user' do
put :update, @accept_params
User.find_by_username(@accept_params['user']['username']).should_not be_nil
end
it 'seeds the aspects' do
put :update, @accept_params
User.find_by_username(@accept_params['user']['username']).aspects.count.should == 2
end
it 'adds a pending request' do
put :update, @accept_params
User.find_by_username(@accept_params['user']['username']).pending_requests.count.should == 1
end
end
end