Handle time entries on subtasks and prevent from reassigning an issue that is going to be deleted (#24718, #24693).

git-svn-id: http://svn.redmine.org/redmine/trunk@16118 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang
2016-12-31 15:04:05 +00:00
parent d42397e9a7
commit 987ca8cc2a
5 changed files with 68 additions and 6 deletions

View File

@@ -4609,7 +4609,7 @@ class IssuesControllerTest < Redmine::ControllerTest
assert_response :success
end
def test_destroy_issue_with_no_time_entries
def test_destroy_issue_with_no_time_entries_should_delete_the_issues
assert_nil TimeEntry.find_by_issue_id(2)
@request.session[:user_id] = 2
@@ -4620,7 +4620,7 @@ class IssuesControllerTest < Redmine::ControllerTest
assert_nil Issue.find_by_id(2)
end
def test_destroy_issues_with_time_entries
def test_destroy_issues_with_time_entries_should_show_the_reassign_form
@request.session[:user_id] = 2
assert_no_difference 'Issue.count' do
@@ -4633,6 +4633,20 @@ class IssuesControllerTest < Redmine::ControllerTest
end
end
def test_destroy_issues_with_time_entries_should_show_hours_on_issues_and_descendants
parent = Issue.generate_with_child!
TimeEntry.generate!(:issue => parent)
TimeEntry.generate!(:issue => parent.children.first)
leaf = Issue.generate!
TimeEntry.generate!(:issue => leaf)
@request.session[:user_id] = 2
delete :destroy, :ids => [parent.id, leaf.id]
assert_response :success
assert_select 'p', :text => /3\.00 hours were reported/
end
def test_destroy_issues_and_destroy_time_entries
@request.session[:user_id] = 2
@@ -4674,6 +4688,24 @@ class IssuesControllerTest < Redmine::ControllerTest
assert_equal 2, TimeEntry.find(2).issue_id
end
def test_destroy_issues_with_time_entries_should_reassign_time_entries_of_issues_and_descendants
parent = Issue.generate_with_child!
TimeEntry.generate!(:issue => parent)
TimeEntry.generate!(:issue => parent.children.first)
leaf = Issue.generate!
TimeEntry.generate!(:issue => leaf)
target = Issue.generate!
@request.session[:user_id] = 2
assert_difference 'Issue.count', -3 do
assert_no_difference 'TimeEntry.count' do
delete :destroy, :ids => [parent.id, leaf.id], :todo => 'reassign', :reassign_to_id => target.id
assert_response 302
end
end
assert_equal 3, target.time_entries.count
end
def test_destroy_issues_and_reassign_time_entries_to_an_invalid_issue_should_fail
@request.session[:user_id] = 2
@@ -4686,6 +4718,18 @@ class IssuesControllerTest < Redmine::ControllerTest
assert_response :success
end
def test_destroy_issues_and_reassign_time_entries_to_an_issue_to_delete_should_fail
@request.session[:user_id] = 2
assert_no_difference 'Issue.count' do
assert_no_difference 'TimeEntry.count' do
delete :destroy, :ids => [1, 3], :todo => 'reassign', :reassign_to_id => 3
end
end
assert_response :success
assert_select '#flash_error', :text => I18n.t(:error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted)
end
def test_destroy_issues_from_different_projects
@request.session[:user_id] = 2