diff options
Diffstat (limited to 'spec/models/user/invite_spec.rb')
-rw-r--r-- | spec/models/user/invite_spec.rb | 73 |
1 files changed, 30 insertions, 43 deletions
diff --git a/spec/models/user/invite_spec.rb b/spec/models/user/invite_spec.rb index 8756a485e..41ce0e6c7 100644 --- a/spec/models/user/invite_spec.rb +++ b/spec/models/user/invite_spec.rb @@ -5,97 +5,84 @@ require 'spec_helper' describe User do - let(:inviter) {new_user = eve; new_user.invites = 5; new_user.save; new_user;} - let(:aspect) {inviter.aspects.create(:name => "awesome")} - let(:another_user) {alice} - let(:wrong_aspect) {another_user.aspects.create(:name => "super")} - let(:inviter_with_3_invites) { new_user = Factory.create(:user); new_user.invites = 3; new_user.save; new_user;} - let(:aspect2) {inviter_with_3_invites.aspects.create(:name => "Jersey Girls")} - - before do - @email = "bob@bob.com" - end - context "creating invites" do + before do + @aspect = eve.aspects.first + @email = "bob@bob.com" + end + it 'requires your aspect' do lambda { - inviter.invite_user(wrong_aspect.id, "email", "maggie@example.com") + eve.invite_user(alice.aspects.first.id, "email", "maggie@example.com") }.should raise_error ActiveRecord::RecordNotFound end it 'takes a service parameter' do @invite_params = {:service => 'email'} Invitation.should_receive(:invite).with(hash_including(@invite_params)) - inviter.invite_user(aspect.id, 'email', @email) + eve.invite_user(@aspect.id, 'email', @email) end it 'takes an indentifier parameter' do @invite_params = {:identifier => @email} Invitation.should_receive(:invite).with(hash_including(@invite_params)) - inviter.invite_user(aspect.id, 'email', @email) + eve.invite_user(@aspect.id, 'email', @email) end it 'calls Invitation.invite' do Invitation.should_receive(:invite) - inviter.invite_user(aspect.id, 'email', @email) + eve.invite_user(@aspect.id, 'email', @email) end it 'has an invitation' do - inviter.invite_user(aspect.id, 'email', @email).invitations_to_me.count.should == 1 + eve.invite_user(@aspect.id, 'email', @email).invitations_to_me.count.should == 1 end it 'creates it with an email' do - inviter.invite_user(aspect.id, 'email', @email).email.should == @email + eve.invite_user(@aspect.id, 'email', @email).email.should == @email end it "throws if you try to add someone you're connected to" do - connect_users(inviter, aspect, another_user, wrong_aspect) - proc{ - inviter.invite_user(aspect.id, 'email', another_user.email) + connect_users(eve, @aspect, alice, alice.aspects.first) + lambda { + eve.invite_user(@aspect.id, 'email', alice.email) }.should raise_error ActiveRecord::RecordNotUnique end - end - - context "limit on invites" do - it 'does not invite people I already invited' do - inviter_with_3_invites.invite_user(aspect2.id, 'email', "email1@example.com") - proc{ - inviter_with_3_invites.invite_user(aspect2.id, 'email', "email1@example.com") + eve.invite_user(@aspect.id, 'email', "email1@example.com") + lambda { + eve.invite_user(@aspect.id, 'email', "email1@example.com") }.should raise_error /You already invited this person/ end end - describe "#accept_invitation!" do - let(:invited_user) {@invited_user_pre.accept_invitation!(:invitation_token => "abc", - :email => "a@a.com", - :username => "user", - :password => "secret", - :password_confirmation => "secret", - :person => {:profile => {:first_name => "Bob", - :last_name => "Smith"}} )} - before do - @invited_user_pre = Invitation.invite(:from => inviter, :service => 'email', :identifier => 'invitee@example.org', :into => aspect).reload + invite_pre = Invitation.invite(:from => eve, :service => 'email', :identifier => 'invitee@example.org', :into => eve.aspects.first).reload @person_count = Person.count + @invited_user = invite_pre.accept_invitation!(:invitation_token => "abc", + :email => "a@a.com", + :username => "user", + :password => "secret", + :password_confirmation => "secret", + :person => {:profile => {:first_name => "Bob", + :last_name => "Smith"}} ) + end context 'after invitation acceptance' do - before do - invited_user.reload - end it 'destroys the invitations' do - invited_user.invitations_to_me.count.should == 0 + @invited_user.invitations_to_me.count.should == 0 end + it "should create the person with the passed in params" do Person.count.should == @person_count + 1 - invited_user.person.profile.first_name.should == "Bob" + @invited_user.person.profile.first_name.should == "Bob" end it 'resolves incoming invitations into contact requests' do - inviter.contacts.where(:person_id => invited_user.person.id).count.should == 1 + eve.contacts.where(:person_id => @invited_user.person.id).count.should == 1 end end end |