From d0d261fdaea3668b5774cfc161c6d768695099c4 Mon Sep 17 00:00:00 2001 From: zhitomirskiyi Date: Thu, 18 Nov 2010 16:23:35 -0800 Subject: [PATCH] zero default invites, the rake task starts people with 5 invites --- app/models/user.rb | 2 +- lib/rake_helpers.rb | 8 +++-- .../invitations_controller_spec.rb | 8 +++++ spec/lib/rake_helper_spec.rb | 31 ++++++++++++++++--- 4 files changed, 41 insertions(+), 8 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 536384401..e23e8051e 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -19,7 +19,7 @@ class User key :username key :serialized_private_key, String - key :invites, Integer, :default => 5 + key :invites, Integer, :default => 0 key :invitation_token, String key :invitation_sent_at, DateTime key :pending_request_ids, Array, :typecast => 'ObjectId' diff --git a/lib/rake_helpers.rb b/lib/rake_helpers.rb index 8d335e8ae..7d64c7e90 100644 --- a/lib/rake_helpers.rb +++ b/lib/rake_helpers.rb @@ -13,8 +13,12 @@ module RakeHelpers churn_through = n backer_name = backers[n+offset][0].to_s.strip backer_email = backers[n+offset][1].to_s.gsub('.ksr', '').strip - puts "sending email to: #{backer_name} #{backer_email}" - Invitation.create_invitee(:email => backer_email, :name => backer_name, :invites => 5) unless User.find_by_email(backer_email) + unless User.find_by_email(backer_email) + puts "sending email to: #{backer_name} #{backer_email}" + Invitation.create_invitee(:email => backer_email, :name => backer_name, :invites => 5) + else + puts "user with the email exists: #{backer_email} , #{backer_name} " + end end churn_through end diff --git a/spec/controllers/invitations_controller_spec.rb b/spec/controllers/invitations_controller_spec.rb index ea2bafe78..6568766d6 100644 --- a/spec/controllers/invitations_controller_spec.rb +++ b/spec/controllers/invitations_controller_spec.rb @@ -31,6 +31,14 @@ describe InvitationsController do post :create, :user=>{:invite_messages=>"test", :aspects=> aspect.id.to_s, :email=>"abc@example.com"} }.should change(Invitation, :count).by(1) end + + it 'creates an invited user with zero invites' do + lambda{ + post :create, :user=>{:invite_messages=>"test", :aspects=> aspect.id.to_s, :email=>"abc@example.com"} + }.should change(User, :count).by(1) + User.find_by_email("abc@example.com").invites.should == 0 + + end end end diff --git a/spec/lib/rake_helper_spec.rb b/spec/lib/rake_helper_spec.rb index b79909b98..5b62b7697 100644 --- a/spec/lib/rake_helper_spec.rb +++ b/spec/lib/rake_helper_spec.rb @@ -4,17 +4,38 @@ require 'spec_helper' require File.join(Rails.root, 'lib/rake_helpers.rb') +include RakeHelpers describe RakeHelpers do before do @csv = File.join(Rails.root, 'spec/fixtures/test.csv') end describe '#process_emails' do - it 'should send emails to each backer' do - pending - Invitation.should_receive(:create_invitee).exactly(3).times - RakeHelpers::process_emails(@csv, 100, 0) - + before do + Devise.mailer.deliveries = [] end + it 'should send emails to each backer' do + Invitation.should_receive(:create_invitee).exactly(3).times + process_emails(@csv, 100, 1) + end + + it 'should not send the email to the same email twice' do + process_emails(@csv, 100, 1) + + Devise.mailer.deliveries.count.should == 3 + process_emails(@csv, 100, 1) + + Devise.mailer.deliveries.count.should == 3 + end + + it 'should make a user with 5 invites' do + User.count.should == 0 + + process_emails(@csv, 1, 1) + + User.count.should == 1 + User.first.invites.should == 5 + end + end end