fix formula and test it
This commit is contained in:
parent
b5970738b9
commit
c6dc220d3d
|
@ -43,10 +43,10 @@ class User < ActiveRecord::Base
|
||||||
|
|
||||||
def calculate_frecency
|
def calculate_frecency
|
||||||
num_orders = Rails.application.config.frecency_num_orders
|
num_orders = Rails.application.config.frecency_num_orders
|
||||||
last_timestamps = self.orders.order(created_at: :desc)
|
last_datetimes = self.orders.order(created_at: :desc)
|
||||||
.limit(num_orders)
|
.limit(num_orders)
|
||||||
.pluck(:created_at)
|
.pluck(:created_at)
|
||||||
self.frecency = last_timestamps.map(&:to_i).sum / num_orders
|
self.frecency = last_datetimes.map(&:to_time).map(&:to_i).sum / num_orders
|
||||||
self.save
|
self.save
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -133,4 +133,23 @@ describe User do
|
||||||
expect(User.publik).to eq([@user, user])
|
expect(User.publik).to eq([@user, user])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe 'frecency' do
|
||||||
|
it 'should be recalculated on creating an order' do
|
||||||
|
expect(@user.frecency).to eq 0
|
||||||
|
create :order, user: @user
|
||||||
|
expect(@user.frecency).to_not eq 0
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should be valid' do
|
||||||
|
dates = [Date.today.to_time, Date.yesterday.to_time]
|
||||||
|
dates.each do |date|
|
||||||
|
create :order, user: @user, created_at: date
|
||||||
|
end
|
||||||
|
@user.reload
|
||||||
|
num_orders = Rails.application.config.frecency_num_orders
|
||||||
|
frecency = dates.last(num_orders).map(&:to_i).sum/num_orders
|
||||||
|
expect(@user.frecency).to eq(frecency)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue