VRFS-1576 added referrals_by_date and associated test
This commit is contained in:
parent
af63b03d6a
commit
b232344336
|
|
@ -32,4 +32,13 @@ class JamRuby::AffiliatePartner < ActiveRecord::Base
|
|||
self.where(:partner_code => code).limit(1).pluck(:id).present?
|
||||
end
|
||||
|
||||
def referrals_by_date
|
||||
User.where(:affiliate_referral_id => self.id)
|
||||
.group('DATE(created_at)')
|
||||
.count
|
||||
.select { |day,count| 0 != count }
|
||||
.inject([]) { |rr,kk,vv| rr << kk }
|
||||
.sort { |a1,a2| a2[0] <=> a1[0] }
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -15,28 +15,28 @@ describe AffiliatePartner do
|
|||
user.reload
|
||||
expect(user.affiliate_partner).to eq(partner)
|
||||
|
||||
expect{AffiliatePartner.create_with_params({:partner_name => Faker::Company.name,
|
||||
oo = AffiliatePartner.create_with_params({:partner_name => Faker::Company.name,
|
||||
:partner_code => 'a',
|
||||
:user_email => user.email})}
|
||||
.to raise_error(ActiveRecord::RecordInvalid)
|
||||
expect{AffiliatePartner.create_with_params({:partner_name => Faker::Company.name,
|
||||
: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})}
|
||||
.to raise_error(ActiveRecord::RecordInvalid)
|
||||
expect{AffiliatePartner.create_with_params({:partner_name => '',
|
||||
: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})}
|
||||
.to raise_error(ActiveRecord::RecordInvalid)
|
||||
expect{AffiliatePartner.create_with_params({:partner_name => Faker::Company.name,
|
||||
: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})}
|
||||
.to raise_error(ActiveRecord::RecordInvalid)
|
||||
:user_email => Faker::Internet.email})
|
||||
expect(oo.errors.messages[:partner_user][0]).to eq("can't be blank")
|
||||
|
||||
code = Faker::Lorem.word
|
||||
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)
|
||||
expect(oo.partner_code).to eq(code.downcase)
|
||||
end
|
||||
|
||||
it 'has user referrals' do
|
||||
|
|
@ -51,4 +51,22 @@ describe AffiliatePartner do
|
|||
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)
|
||||
expect(Date.parse(by_date.first.first.to_s)).to eq(Date.parse((Time.now - 2.days).to_s))
|
||||
expect(by_date.first.last.to_i).to eq(1)
|
||||
expect(Date.parse(by_date.last.first.to_s)).to eq(Date.parse((Time.now - 7.days).to_s))
|
||||
expect(by_date.last.last.to_i).to eq(2)
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue