remove running timer info when the time entry is removed

This commit is contained in:
Jens Kraemer
2021-10-05 10:44:37 +08:00
parent 53d5fbafd2
commit a2096e3208
3 changed files with 43 additions and 0 deletions

View File

@@ -19,5 +19,6 @@ end
Rails.configuration.to_prepare do
Stopwatch::UserPatch.apply
Stopwatch::TimeEntryPatch.apply
end

View File

@@ -0,0 +1,18 @@
module Stopwatch
module TimeEntryPatch
def self.apply
TimeEntry.prepend self unless TimeEntry < self
end
def self.prepended(base)
base.class_eval do
before_destroy :stop_timer
end
end
def stop_timer
t = Stopwatch::Timer.new(user)
t.update(stop: true) if t.running?
end
end
end

View File

@@ -0,0 +1,24 @@
require_relative '../test_helper'
class StartTimerTest < ActiveSupport::TestCase
fixtures :users, :user_preferences, :time_entries, :projects,
:roles, :member_roles, :members, :enumerations, :enabled_modules
setup do
@user = User.find 1
@time_entry = TimeEntry.where(user_id: 1).first
# so we dont have to load all the issue and related fixtures:
@time_entry.update_column :issue_id, nil
end
test "should stop timer before destroy" do
assert r = Stopwatch::StartTimer.new(@time_entry, user: @user).call
assert r.success?, r.inspect
assert User.find(@user.id).timer_running?
@time_entry.destroy
refute User.find(@user.id).timer_running?
end
end