Created
December 12, 2012 04:46
-
-
Save joekr/4264929 to your computer and use it in GitHub Desktop.
Simple referral rspecs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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