mirror of
https://github.com/meineerde/redmine.git
synced 2026-03-19 15:38:17 +00:00
Fix time entry activity is not set as default when the default activity exists as project specific activity (#33914).
Patch by Mizuki ISHIKAWA. git-svn-id: https://svn.redmine.org/redmine/trunk@21668 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
e0f0f2c210
commit
bfcb1b0054
@ -107,7 +107,7 @@ class TimeEntry < ActiveRecord::Base
|
|||||||
def initialize(attributes=nil, *args)
|
def initialize(attributes=nil, *args)
|
||||||
super
|
super
|
||||||
if new_record? && self.activity.nil?
|
if new_record? && self.activity.nil?
|
||||||
if default_activity = TimeEntryActivity.default
|
if default_activity = TimeEntryActivity.default(self.project)
|
||||||
self.activity_id = default_activity.id
|
self.activity_id = default_activity.id
|
||||||
end
|
end
|
||||||
self.hours = nil if hours == 0
|
self.hours = nil if hours == 0
|
||||||
|
|||||||
@ -22,6 +22,15 @@ class TimeEntryActivity < Enumeration
|
|||||||
|
|
||||||
OptionName = :enumeration_activities
|
OptionName = :enumeration_activities
|
||||||
|
|
||||||
|
def self.default(project=nil)
|
||||||
|
default_activity = super()
|
||||||
|
if project.nil? || project.activities.blank? || project.activities.include?(default_activity)
|
||||||
|
return default_activity
|
||||||
|
end
|
||||||
|
|
||||||
|
project.activities.find_by(parent_id: default_activity.id)
|
||||||
|
end
|
||||||
|
|
||||||
def option_name
|
def option_name
|
||||||
OptionName
|
OptionName
|
||||||
end
|
end
|
||||||
|
|||||||
@ -219,4 +219,16 @@ class TimeEntryActivityTest < ActiveSupport::TestCase
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_default_should_return_default_activity_if_default_activity_is_included_in_the_project_activities
|
||||||
|
project = Project.find(1)
|
||||||
|
assert_equal TimeEntryActivity.default(project).id, 10
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_default_should_return_project_specific_default_activity_if_default_activity_is_not_included_in_the_project_activities
|
||||||
|
project = Project.find(1)
|
||||||
|
project_specific_default_activity = TimeEntryActivity.create!(name: 'Development', parent_id: 10, project_id: project.id, is_default: false)
|
||||||
|
assert_not_equal TimeEntryActivity.default(project).id, 10
|
||||||
|
assert_equal TimeEntryActivity.default(project).id, project_specific_default_activity.id
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -126,6 +126,19 @@ class TimeEntryTest < ActiveSupport::TestCase
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_activity_id_should_default_activity_id
|
||||||
|
project = Project.find(1)
|
||||||
|
default_activity = TimeEntryActivity.find(10)
|
||||||
|
entry = TimeEntry.new(project: project)
|
||||||
|
assert_equal entry.activity_id, default_activity.id
|
||||||
|
|
||||||
|
# If there are project specific activities
|
||||||
|
project_specific_default_activity = TimeEntryActivity.create!(name: 'Development', parent_id: 10, project_id: project.id, is_default: false)
|
||||||
|
entry = TimeEntry.new(project: project)
|
||||||
|
assert_not_equal entry.activity_id, default_activity.id
|
||||||
|
assert_equal entry.activity_id, project_specific_default_activity.id
|
||||||
|
end
|
||||||
|
|
||||||
def test_should_accept_future_dates
|
def test_should_accept_future_dates
|
||||||
entry = TimeEntry.generate
|
entry = TimeEntry.generate
|
||||||
entry.spent_on = User.current.today + 1
|
entry.spent_on = User.current.today + 1
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user