[#4604] Clear and recalculate the #cost on Rate#destroy
This commit is contained in:
@@ -13,6 +13,7 @@ class Rate < ActiveRecord::Base
|
||||
before_save :unlocked?
|
||||
after_save :update_time_entry_cost_cache
|
||||
before_destroy :unlocked?
|
||||
after_destroy :update_time_entry_cost_cache
|
||||
|
||||
named_scope :history_for_user, lambda { |user, order|
|
||||
{
|
||||
|
||||
@@ -106,6 +106,32 @@ class RateTest < ActiveSupport::TestCase
|
||||
|
||||
end
|
||||
|
||||
context "after destroy" do
|
||||
should "recalculate all of the cached cost of all Time Entries for the user" do
|
||||
@user = User.generate!
|
||||
@project = Project.generate!
|
||||
@date = Date.today.to_s
|
||||
@past_date = 1.month.ago.strftime('%Y-%m-%d')
|
||||
@rate = Rate.generate!(:user => @user, :project => @project, :date_in_effect => @date, :amount => 200.0)
|
||||
@old_rate = Rate.generate!(:user => @user, :project => @project, :date_in_effect => 2.months.ago.strftime('%Y-%m-%d'), :amount => 10.0)
|
||||
|
||||
@time_entry1 = TimeEntry.generate!({:user => @user, :project => @project, :spent_on => @date, :hours => 10.0, :activity => TimeEntryActivity.generate!})
|
||||
@time_entry2 = TimeEntry.generate!({:user => @user, :project => @project, :spent_on => @past_date, :hours => 20.0, :activity => TimeEntryActivity.generate!})
|
||||
|
||||
|
||||
assert_equal 2000.00, @time_entry1.cost
|
||||
assert_equal 2000.00, @time_entry1.read_attribute(:cost)
|
||||
assert_equal 200.0, @time_entry2.cost
|
||||
assert_equal 200.0, @time_entry2.read_attribute(:cost)
|
||||
|
||||
@old_rate.destroy
|
||||
|
||||
assert_equal 2000.0, TimeEntry.find(@time_entry1.id).cost
|
||||
assert_equal 0, TimeEntry.find(@time_entry2.id).cost
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
context '#for' do
|
||||
setup do
|
||||
@user = User.generate!
|
||||
|
||||
Reference in New Issue
Block a user