Skip to content

Instantly share code, notes, and snippets.

@jdkealy
Created October 4, 2011 19:28
Show Gist options
  • Save jdkealy/1262545 to your computer and use it in GitHub Desktop.
Save jdkealy/1262545 to your computer and use it in GitHub Desktop.
require 'spec_helper'
describe Member do
it "should authenticate with matching username and password" do
user = Factory(:member)
Member.find_by_email('foo1@example.com').should == user
end
describe "references" do
before(:each) do
@user = Factory(:member)
@user_two = Factory(:member, :parent_id=>@user.id)
@user_three = Factory(:member, :parent_id=>@user_two.id)
@user_four = Factory(:member, :parent_id=>@user_three.id)
@user_five = Factory(:member, :parent_id=>@user_four.id)
20.times do
Factory(:member, :parent_id=>@user.id)
end
5.times do
Factory(:member, :parent_id=>@user_five.id)
end
@uwtc_pre_pre = Factory(:member)
@uwtc_pre = Factory(:member, :parent_id=>@uwtc_pre_pre.id)
@uwtc = Factory(:member, :parent_id=>@uwtc_pre.id)
@uwtc1 = Factory(:member, :parent_id=>@uwtc.id)
@uwtc11 = Factory(:member, :parent_id=> @uwtc1.id)
@uwtc111 = Factory(:member, :parent_id=>@uwtc11.id)
@uwtc1111 = Factory(:member, :parent_id=>@uwtc111.id)
@uwtc2 = Factory(:member, :parent_id=>@uwtc.id)
@uwtc22 = Factory(:member, :parent_id=>@uwtc2.id)
@uwtc222 = Factory(:member, :parent_id=>@uwtc22.id)
@uwtc2222 = Factory(:member, :parent_id=>@uwtc222.id)
@uwtc3 = Factory(:member, :parent_id=>@uwtc.id)
@uwtc33 = Factory(:member, :parent_id=>@uwtc3.id)
@uwtc333 = Factory(:member, :parent_id=>@uwtc33.id)
@uwtc3333 = Factory(:member, :parent_id=>@uwtc333.id)
@uwtc4 = Factory(:member, :parent_id=>@uwtc.id)
@uwtc44 = Factory(:member, :parent_id=>@uwtc4.id)
@uwtc444 = Factory(:member, :parent_id=>@uwtc44.id)
@uwtc4444 = Factory(:member, :parent_id=>@uwtc444.id)
end
describe "4 set 3 kid user" do
it "should have 12 descdendents" do
@uwtc.child_level(@uwtc, 3).uniq.count.should == 12
end
it "should have 9 descdendents" do
@uwtc_pre.child_level(@uwtc_pre, 3).uniq.count.should == 9
end
it "should have 9 descdendents" do
@uwtc_pre_pre.child_level(@uwtc_pre_pre, 3).uniq.count.should == 6
end
end
it "should have a reference_url afer creating member" do
@user.reference_url.should_not be_nil
end
it "should make member a be a referal of member b if member b signs up via member a's link" do
@user.children.should include(@user_two)
end
it "should do an MLM style thing where if user the references of my references should be included in my reference score" do
@user.all_children.should include(@user_three)
end
it "should have a method just for direct references" do
@user.children.should_not include(@user_three)
end
it "should run 3 levels deep" do
@user.all_children.should include(@user_four)
end
it "should not run 4 levels deep" do
@user.child_level(@user, 4).should_not include(@user_five)
end
it "should return true when a user has more than 5 references" do
@user.can_reward.should == true
end
it "should return true when a user has more than 5 references" do
@user_five.can_reward.should == true
end
it "should return true when a user has 20 or more references and they have only created one" do
r = Reward.create(:title=>'foo', :member_id=>@user.id)
@user.can_reward.should == true
end
it "should return true when a user has more than 5 references" do
@user_four.can_reward.should == true
end
it "should have a method just for indirect references"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment