Skip to content

Instantly share code, notes, and snippets.

@joekr
Created December 12, 2012 04:46
Show Gist options
  • Save joekr/4264929 to your computer and use it in GitHub Desktop.
Save joekr/4264929 to your computer and use it in GitHub Desktop.
Simple referral rspecs
require 'spec_helper'
describe "ad_spots/index" do
before(:each) do
assign(:ad_spots, [
stub_model(AdSpot),
stub_model(User)
])
end
it "renders a referal link" do
@user = FactoryGirl.create(:user)
render
# should be page?
response.should have_link referral_users_path({:r=>@user.referral, :only_path => false})
end
it "renders a referral number" do
@user = FactoryGirl.create(:user)
User.should_receive(:where).and_return([:return_value1, :return_value2, :return_value3])
render
# should be page?
response.should have_text "You are directly responsible for 3 users signing up for DoubleStitch"
end
end
require "spec_helper"
describe Devise::RegistrationsController do
before :each do
request.env["devise.mapping"] = Devise.mappings[:user]
end
it "create should create new user with referrer" do
newUser = FactoryGirl.create(:user)
userReferrer = FactoryGirl.create(:user)
User.stub(:find_by_referral_hash).and_return(userReferrer)
controller.stub :resource => newUser
newUser.stub(:save).and_return(true)
subject.stub(:after_sign_up_path_for).and_return("");
session[:referred_by] = userReferrer.id
post "create"
assert newUser.referred_by == userReferrer.id
end
it "create should flash a message after save" do
newUser = FactoryGirl.create(:user)
userReferrer = FactoryGirl.create(:user)
User.stub(:find_by_referral_hash).and_return(userReferrer)
controller.stub :resource => newUser
newUser.stub(:save).and_return(true)
subject.stub(:is_navigational_format?).and_return(true)
subject.should_receive(:set_flash_message).with(any_args());
post "create"
end
it "create should NOT flash a message after save" do
newUser = FactoryGirl.create(:user)
userReferrer = FactoryGirl.create(:user)
User.stub(:find_by_referral_hash).and_return(userReferrer)
controller.stub :resource => newUser
newUser.stub(:save).and_return(true)
subject.stub(:is_navigational_format?).and_return(false)
subject.should_not_receive(:set_flash_message).with(any_args());
post "create"
end
it "create should sign in user after save" do
newUser = FactoryGirl.create(:user)
userReferrer = FactoryGirl.create(:user)
User.stub(:find_by_referral_hash).and_return(userReferrer)
controller.stub :resource => newUser
newUser.stub(:save).and_return(true)
subject.should_receive(:sign_in).with(any_args());
post "create"
end
it "create should redirect user after sign in" do
newUser = FactoryGirl.create(:user)
userReferrer = FactoryGirl.create(:user)
User.stub(:find_by_referral_hash).and_return(userReferrer)
controller.stub :resource => newUser
newUser.stub(:save).and_return(true)
subject.should_receive(:after_sign_up_path_for).and_return("");
post "create"
end
it "create should find user by referral hash" do
newUser = FactoryGirl.create(:user)
userReferrer = FactoryGirl.create(:user)
User.should_receive(:find_by_referral_hash).and_return(userReferrer)
session[:referred_by] = userReferrer.id
post "create"
end
it "create should save the user information" do
newUser = FactoryGirl.create(:user)
userReferrer = FactoryGirl.create(:user)
User.stub(:find_by_referral_hash).and_return(userReferrer)
controller.stub :resource => newUser
newUser.should_receive(:save).at_least(:once).and_return(true)
subject.stub(:after_sign_up_path_for).and_return("");
post "create"
end
it "create should handle inactive user and show flash" do
newUser = FactoryGirl.create(:user)
userReferrer = FactoryGirl.create(:user)
User.stub(:find_by_referral_hash).and_return(userReferrer)
controller.stub :resource => newUser
newUser.stub(:save).at_least(:once).and_return(true)
newUser.stub(:active_for_authentication?).and_return(false)
subject.stub(:is_navigational_format?).and_return(true)
subject.should_receive(:set_flash_message).with(any_args());
post "create"
end
it "create should handle inactive user and do not show flash" do
newUser = FactoryGirl.create(:user)
userReferrer = FactoryGirl.create(:user)
User.stub(:find_by_referral_hash).and_return(userReferrer)
controller.stub :resource => newUser
newUser.stub(:save).at_least(:once).and_return(true)
newUser.stub(:active_for_authentication?).and_return(false)
subject.stub(:is_navigational_format?).and_return(false)
subject.should_not_receive(:set_flash_message).with(any_args());
post "create"
end
it "create should handle inactive user and expire user session" do
newUser = FactoryGirl.create(:user)
userReferrer = FactoryGirl.create(:user)
User.stub(:find_by_referral_hash).and_return(userReferrer)
controller.stub :resource => newUser
newUser.stub(:save).and_return(true)
newUser.stub(:active_for_authentication?).and_return(false)
subject.should_receive(:expire_session_data_after_sign_in!).with(any_args());
post "create"
end
it "create should handle inactive user and redirect user to inactive sign up" do
newUser = FactoryGirl.create(:user)
userReferrer = FactoryGirl.create(:user)
User.stub(:find_by_referral_hash).and_return(userReferrer)
controller.stub :resource => newUser
newUser.stub(:save).and_return(true)
newUser.stub(:active_for_authentication?).and_return(false)
subject.should_receive(:after_inactive_sign_up_path_for);
post "create"
end
it "create should handle nil referrer from DB" do
newUser = FactoryGirl.create(:user)
userReferrer = FactoryGirl.create(:user)
User.should_receive(:find_by_referral_hash).and_return(nil)
controller.stub :resource => newUser
newUser.stub(:save).and_return(true)
subject.should_receive(:after_sign_up_path_for).and_return("");
subject.should_not_receive(:after_inactive_sign_up_path_for).with(any_args())
subject.should_not_receive(:clean_up_passwords).with(any_args())
session[:referred_by] = userReferrer.id
post "create"
response.code.should == "302"
assert newUser.referred_by != userReferrer.id
end
it "create should create new user without referrer" do
newUser = FactoryGirl.create(:user)
userReferrer = FactoryGirl.create(:user)
User.stub(:find_by_referral_hash).and_return(userReferrer)
controller.stub :resource => newUser
newUser.stub(:save).and_return(true)
post "create"
assert newUser.referred_by != userReferrer.id
end
it "create should not save new user and cleans up passwords" do
newUser = FactoryGirl.create(:user)
userReferrer = FactoryGirl.create(:user)
subject.should_receive(:clean_up_passwords).with(any_args())
controller.stub :resource => newUser
newUser.stub(:save).and_return(false)
post "create"
end
end
require 'spec_helper'
describe User do
it {should have_many :offerings}
it {should have_many :blogs}
it {should have_many :ad_spots}
it {should have_many :ads}
#added this test
it "user has a referal" do
newUser = FactoryGirl.create(:user)
assert !newUser.referral.empty?
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment