Fixed that deleting a system activity with children in use raises an error (#13783).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11763 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
6c39a260a3
commit
c5ac2d3966
@ -24,11 +24,15 @@ class TimeEntryActivity < Enumeration
|
|||||||
OptionName
|
OptionName
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def objects
|
||||||
|
TimeEntry.where(:activity_id => self_and_descendants(1).map(&:id))
|
||||||
|
end
|
||||||
|
|
||||||
def objects_count
|
def objects_count
|
||||||
time_entries.count
|
objects.count
|
||||||
end
|
end
|
||||||
|
|
||||||
def transfer_relations(to)
|
def transfer_relations(to)
|
||||||
time_entries.update_all("activity_id = #{to.id}")
|
objects.update_all(:activity_id => to.id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -107,10 +107,11 @@ module ObjectHelpers
|
|||||||
def TimeEntry.generate!(attributes={})
|
def TimeEntry.generate!(attributes={})
|
||||||
entry = TimeEntry.new(attributes)
|
entry = TimeEntry.new(attributes)
|
||||||
entry.user ||= User.find(2)
|
entry.user ||= User.find(2)
|
||||||
entry.issue ||= Issue.find(1)
|
entry.issue ||= Issue.find(1) unless entry.project
|
||||||
entry.project ||= entry.issue.project
|
entry.project ||= entry.issue.project
|
||||||
entry.activity ||= TimeEntryActivity.first
|
entry.activity ||= TimeEntryActivity.first
|
||||||
entry.spent_on ||= Date.today
|
entry.spent_on ||= Date.today
|
||||||
|
entry.hours ||= 1.0
|
||||||
entry.save!
|
entry.save!
|
||||||
entry
|
entry
|
||||||
end
|
end
|
||||||
|
@ -84,5 +84,33 @@ class TimeEntryActivityTest < ActiveSupport::TestCase
|
|||||||
e.reload
|
e.reload
|
||||||
assert_equal "0", e.custom_value_for(field).value
|
assert_equal "0", e.custom_value_for(field).value
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
|
def test_system_activity_with_child_in_use_should_be_in_use
|
||||||
|
project = Project.generate!
|
||||||
|
system_activity = TimeEntryActivity.create!(:name => 'Activity')
|
||||||
|
project_activity = TimeEntryActivity.create!(:name => 'Activity', :project => project, :parent_id => system_activity.id)
|
||||||
|
|
||||||
|
TimeEntry.generate!(:project => project, :activity => project_activity)
|
||||||
|
|
||||||
|
assert project_activity.in_use?
|
||||||
|
assert system_activity.in_use?
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_destroying_a_system_activity_should_reassign_children_activities
|
||||||
|
project = Project.generate!
|
||||||
|
system_activity = TimeEntryActivity.create!(:name => 'Activity')
|
||||||
|
project_activity = TimeEntryActivity.create!(:name => 'Activity', :project => project, :parent_id => system_activity.id)
|
||||||
|
|
||||||
|
entries = [
|
||||||
|
TimeEntry.generate!(:project => project, :activity => system_activity),
|
||||||
|
TimeEntry.generate!(:project => project, :activity => project_activity)
|
||||||
|
]
|
||||||
|
|
||||||
|
assert_difference 'TimeEntryActivity.count', -2 do
|
||||||
|
assert_nothing_raised do
|
||||||
|
assert system_activity.destroy(TimeEntryActivity.find_by_name('Development'))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
assert entries.all? {|entry| entry.reload.activity.name == 'Development'}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user