jam-cloud/ruby/spec/jam_ruby/models/affiliate_partner_spec.rb

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