2015-10-11 17:41:23 +08:00
|
|
|
require 'rails_helper'
|
2013-08-28 15:18:31 +08:00
|
|
|
|
|
|
|
describe InviteRedeemer do
|
|
|
|
|
2016-07-13 11:58:31 +08:00
|
|
|
describe '#create_user_from_invite' do
|
2014-07-14 23:56:26 +08:00
|
|
|
let(:user) { InviteRedeemer.create_user_from_invite(Fabricate(:invite, email: 'walter.white@email.com'), 'walter', 'Walter White') }
|
2016-07-13 11:58:31 +08:00
|
|
|
|
2013-08-28 15:18:31 +08:00
|
|
|
it "should be created correctly" do
|
2014-12-31 22:55:03 +08:00
|
|
|
expect(user.username).to eq('walter')
|
|
|
|
expect(user.name).to eq('Walter White')
|
|
|
|
expect(user).to be_active
|
|
|
|
expect(user.email).to eq('walter.white@email.com')
|
2013-08-28 15:18:31 +08:00
|
|
|
end
|
|
|
|
end
|
2016-07-13 11:58:31 +08:00
|
|
|
|
|
|
|
describe "#redeem" do
|
|
|
|
let(:invite) { Fabricate(:invite) }
|
|
|
|
let(:name) { 'john snow' }
|
|
|
|
let(:username) { 'kingofthenorth' }
|
|
|
|
let(:invite_redeemer) { InviteRedeemer.new(invite, username, name) }
|
|
|
|
|
|
|
|
it "should redeem the invite" do
|
|
|
|
inviter = invite.invited_by
|
|
|
|
user = invite_redeemer.redeem
|
|
|
|
|
|
|
|
expect(user.name).to eq(name)
|
|
|
|
expect(user.username).to eq(username)
|
|
|
|
expect(user.invited_by).to eq(inviter)
|
|
|
|
expect(inviter.notifications.count).to eq(1)
|
|
|
|
end
|
|
|
|
|
|
|
|
it "should not blow up if invited_by user has been removed" do
|
|
|
|
invite.invited_by.destroy!
|
|
|
|
invite.reload
|
|
|
|
|
|
|
|
user = invite_redeemer.redeem
|
|
|
|
|
|
|
|
expect(user.name).to eq(name)
|
|
|
|
expect(user.username).to eq(username)
|
|
|
|
expect(user.invited_by).to eq(nil)
|
|
|
|
end
|
|
|
|
end
|
2013-08-28 15:18:31 +08:00
|
|
|
end
|