77 lines
3.6 KiB
Ruby
77 lines
3.6 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe AffiliatePartner do
|
|
|
|
let!(:user) { FactoryGirl.create(:user) }
|
|
let!(:partner) {
|
|
AffiliatePartner.create_with_params({:partner_name => 'partner',
|
|
:partner_code => 'code',
|
|
:user_email => user.email})
|
|
}
|
|
|
|
# Faker::Lorem.word is tripping up the PARTNER_CODE_REGEX. We should not use it.
|
|
it 'validates required fields' do
|
|
pending
|
|
expect(partner.referral_user_count).to eq(0)
|
|
expect(partner.partner_user).to eq(user)
|
|
user.reload
|
|
expect(user.affiliate_partner).to eq(partner)
|
|
|
|
oo = AffiliatePartner.create_with_params({:partner_name => Faker::Company.name,
|
|
:partner_code => 'a',
|
|
:user_email => user.email})
|
|
expect(oo.errors.messages[:partner_code][0]).to eq('is invalid')
|
|
oo = AffiliatePartner.create_with_params({:partner_name => Faker::Company.name,
|
|
:partner_code => 'foo bar',
|
|
:user_email => user.email})
|
|
expect(oo.errors.messages[:partner_code][0]).to eq('is invalid')
|
|
oo = AffiliatePartner.create_with_params({:partner_name => '',
|
|
:partner_code => Faker::Lorem.word,
|
|
:user_email => user.email})
|
|
expect(oo.errors.messages[:partner_name][0]).to eq("can't be blank")
|
|
oo = AffiliatePartner.create_with_params({:partner_name => '',
|
|
:partner_code => Faker::Lorem.word,
|
|
:user_email => Faker::Internet.email})
|
|
expect(oo.errors.messages[:partner_user][0]).to eq("can't be blank")
|
|
|
|
code = Faker::Lorem.word.upcase
|
|
oo = AffiliatePartner.create_with_params({:partner_name => Faker::Company.name,
|
|
:partner_code => " #{code} ",
|
|
:user_email => user.email})
|
|
expect(oo.partner_code).to eq(code.downcase)
|
|
end
|
|
|
|
it 'has user referrals' do
|
|
pending
|
|
expect(AffiliatePartner.coded_id(partner.partner_code)).to eq(partner.id)
|
|
expect(partner.referral_user_count).to eq(0)
|
|
uu = FactoryGirl.create(:user)
|
|
uu.affiliate_referral = partner
|
|
uu.save
|
|
partner.reload
|
|
expect(uu.affiliate_referral).to eq(partner)
|
|
expect(partner.referral_user_count).to eq(1)
|
|
expect(partner.user_referrals[0]).to eq(uu)
|
|
end
|
|
|
|
it 'groups referrals properly' do
|
|
FactoryGirl.create(:user, :created_at => Time.now - 7.days, :affiliate_referral_id => partner.id)
|
|
FactoryGirl.create(:user, :created_at => Time.now - 7.days, :affiliate_referral_id => partner.id)
|
|
FactoryGirl.create(:user, :created_at => Time.now - 6.days, :affiliate_referral_id => partner.id)
|
|
FactoryGirl.create(:user, :created_at => Time.now - 6.days, :affiliate_referral_id => partner.id)
|
|
FactoryGirl.create(:user, :created_at => Time.now - 3.days, :affiliate_referral_id => partner.id)
|
|
FactoryGirl.create(:user, :created_at => Time.now - 2.days, :affiliate_referral_id => partner.id)
|
|
partner.reload
|
|
expect(partner.referral_user_count).to eq(6)
|
|
|
|
by_date = partner.referrals_by_date
|
|
expect(by_date.count).to eq(4)
|
|
keys = by_date.keys
|
|
expect(Date.parse(keys.first)).to eq(Date.parse((Time.now - 2.days).to_s))
|
|
expect(by_date[keys.first]).to eq(1)
|
|
expect(Date.parse(keys.last)).to eq(Date.parse((Time.now - 7.days).to_s))
|
|
expect(by_date[keys.last]).to eq(2)
|
|
end
|
|
|
|
end
|