76 lines
2.4 KiB
Ruby
76 lines
2.4 KiB
Ruby
# Copyright (c) 2010, Diaspora Inc. This file is
|
|
# licensed under the Affero General Public License version 3 or later. See
|
|
# the COPYRIGHT file.
|
|
|
|
require File.join(File.dirname(__FILE__), "..", "spec_helper")
|
|
|
|
describe InvitationsController do
|
|
include Devise::TestHelpers
|
|
|
|
render_views
|
|
|
|
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
|
|
it 'invites the requested user' do
|
|
user.should_receive(:invite_user).and_return(make_user)
|
|
post :create, :user => @invite
|
|
end
|
|
|
|
it 'creates an invitation' do
|
|
lambda{
|
|
post :create, :user => @invite
|
|
}.should change(Invitation, :count).by(1)
|
|
end
|
|
|
|
it 'creates an invited user with five invites' do
|
|
lambda{
|
|
post :create, :user => @invite
|
|
}.should change(User, :count).by(1)
|
|
User.find_by_email("abc@example.com").invites.should == 5
|
|
end
|
|
|
|
it 'can handle a comma seperated list of emails' do
|
|
lambda {
|
|
post :create, :user => @invite.merge(:email => "foofoofoofoo@example.com, mbs@gmail.com")
|
|
}.should change(User, :count).by(2)
|
|
end
|
|
|
|
it 'displays a message that tells you how many invites were sent, and which REJECTED' do
|
|
post :create, :user => @invite.merge(:email => "mbs@gmail.com, foo@bar.com, foo.com, lala@foo, cool@bar.com")
|
|
flash[:notice].should_not be_empty
|
|
flash[:notice].should =~ /mbs@gmail\.com/
|
|
flash[:notice].should =~ /foo@bar\.com/
|
|
flash[:notice].should =~ /cool@bar\.com/
|
|
|
|
flash[:error].should_not be_empty
|
|
flash[:error].should =~ /foo\.com/
|
|
flash[:error].should =~ /lala@foo/
|
|
end
|
|
|
|
it "doesn't invite anyone if you have 0 invites" do
|
|
user.invites = 0
|
|
user.save!
|
|
lambda {
|
|
post :create, :user => @invite.merge(:email => "mbs@gmail.com, foo@bar.com, foo.com, lala@foo, cool@bar.com")
|
|
}.should_not change(User, :count)
|
|
end
|
|
|
|
it 'returns to the previous page on success' do
|
|
post :create, :user => @invite
|
|
response.should redirect_to("http://test.host/cats/foo")
|
|
end
|
|
end
|
|
end
|
|
|