Defect #33914 ยป fix-33914.patch
app/models/time_entry.rb | ||
---|---|---|
97 | 97 |
def initialize(attributes=nil, *args) |
98 | 98 |
super |
99 | 99 |
if new_record? && self.activity.nil? |
100 |
if default_activity = TimeEntryActivity.default |
|
100 |
if default_activity = TimeEntryActivity.default(self.project)
|
|
101 | 101 |
self.activity_id = default_activity.id |
102 | 102 |
end |
103 | 103 |
self.hours = nil if hours == 0 |
app/models/time_entry_activity.rb | ||
---|---|---|
22 | 22 | |
23 | 23 |
OptionName = :enumeration_activities |
24 | 24 | |
25 |
def self.default(project=nil) |
|
26 |
default_activity = super() |
|
27 |
if project.nil? || project.activities.blank? || project.activities.include?(default_activity) |
|
28 |
return default_activity |
|
29 |
end |
|
30 | ||
31 |
project.activities.find_by(parent_id: default_activity.id) |
|
32 |
end |
|
33 | ||
25 | 34 |
def option_name |
26 | 35 |
OptionName |
27 | 36 |
end |
test/unit/time_entry_activity_test.rb | ||
---|---|---|
131 | 131 |
assert_include activity, project.activities |
132 | 132 |
assert_include TimeEntryActivity.find(9), project.activities |
133 | 133 |
end |
134 | ||
135 |
def test_default_should_return_default_activity_if_default_activity_is_included_in_the_project_activities |
|
136 |
project = Project.find(1) |
|
137 |
assert_equal TimeEntryActivity.default(project).id, 10 |
|
138 |
end |
|
139 | ||
140 |
def test_default_should_return_project_specific_default_activity_if_default_activity_is_not_included_in_the_project_activities |
|
141 |
project = Project.find(1) |
|
142 |
project_specific_default_activity = TimeEntryActivity.create!(name: 'Development', parent_id: 10, project_id: project.id, is_default: false) |
|
143 |
assert_not_equal TimeEntryActivity.default(project).id, 10 |
|
144 |
assert_equal TimeEntryActivity.default(project).id, project_specific_default_activity.id |
|
145 |
end |
|
134 | 146 |
end |
test/unit/time_entry_test.rb | ||
---|---|---|
125 | 125 |
end |
126 | 126 |
end |
127 | 127 | |
128 |
def test_activity_id_should_default_activity_id |
|
129 |
project = Project.find(1) |
|
130 |
default_activity = TimeEntryActivity.find(10) |
|
131 |
entry = TimeEntry.new(project: project) |
|
132 |
assert_equal entry.activity_id, default_activity.id |
|
133 | ||
134 |
# If there are project specific activities |
|
135 |
project_specific_default_activity = TimeEntryActivity.create!(name: 'Development', parent_id: 10, project_id: project.id, is_default: false) |
|
136 |
entry = TimeEntry.new(project: project) |
|
137 |
assert_not_equal entry.activity_id, default_activity.id |
|
138 |
assert_equal entry.activity_id, project_specific_default_activity.id |
|
139 |
end |
|
140 | ||
128 | 141 |
def test_should_accept_future_dates |
129 | 142 |
entry = TimeEntry.generate |
130 | 143 |
entry.spent_on = User.current.today + 1 |