Show warning and the reason when the issue cannot be closed or reopen because of open subtask(s), blocking issue(s) or closed parent issue (#31589).

Patch by Marius BALTEANU.


git-svn-id: http://svn.redmine.org/redmine/trunk@19570 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Go MAEDA
2020-03-10 03:50:47 +00:00
parent 463e8163fc
commit 5917137d12
5 changed files with 77 additions and 4 deletions

View File

@@ -5278,6 +5278,7 @@ class IssuesControllerTest < Redmine::ControllerTest
assert_select 'select[name=?]', 'issue[priority_id]' do
assert_select 'option[value="15"]', 0
end
assert_select 'span.icon-warning', 0
end
def test_edit_should_hide_project_if_user_is_not_allowed_to_change_project
@@ -5389,6 +5390,21 @@ class IssuesControllerTest < Redmine::ControllerTest
end
end
def test_get_edit_for_issue_with_transition_warning_should_show_the_warning
@request.session[:user_id] = 2
get(
:edit,
:params => {
:id => 9,
}
)
assert_response :success
reason = l(:notice_issue_not_closable_by_blocking_issue)
assert_select 'span.icon-warning[title=?]', reason, :text => reason
end
def test_update_form_for_existing_issue
@request.session[:user_id] = 2
patch(

View File

@@ -2104,6 +2104,10 @@ class IssueTest < ActiveSupport::TestCase
child = Issue.generate!(:parent_issue_id => parent.id)
allowed_statuses = parent.reload.new_statuses_allowed_to(users(:users_002))
assert !parent.closable?
assert_equal l(:notice_issue_not_closable_by_open_tasks), parent.transition_warning
assert allowed_statuses.any?
assert_equal [], allowed_statuses.select(&:is_closed?)
end
@@ -2113,6 +2117,9 @@ class IssueTest < ActiveSupport::TestCase
child = Issue.generate!(:parent_issue_id => parent.id, :status_id => 5)
allowed_statuses = parent.reload.new_statuses_allowed_to(users(:users_002))
assert parent.closable?
assert_nil parent.transition_warning
assert allowed_statuses.any?
assert allowed_statuses.select(&:is_closed?).any?
end
@@ -3285,4 +3292,23 @@ class IssueTest < ActiveSupport::TestCase
User.current = user_in_asia
assert issue.overdue?
end
def test_closable
issue10 = Issue.find(10)
assert issue10.closable?
assert_nil issue10.transition_warning
# Issue blocked by another issue
issue9 = Issue.find(9)
assert !issue9.closable?
assert_equal l(:notice_issue_not_closable_by_blocking_issue), issue9.transition_warning
end
def test_reopenable
parent = Issue.generate!(:status_id => 5)
child = parent.generate_child!(:status_id => 5)
assert !child.reopenable?
assert_equal l(:notice_issue_not_reopenable_by_closed_parent_issue), child.transition_warning
end
end