Feature #28492 » issue-28492.ver.3.diff
test/unit/issue_test.rb | ||
---|---|---|
2099 | 2099 |
assert !closed_statuses.empty? |
2100 | 2100 |
end |
2101 | 2101 | |
2102 |
def test_parent_issues_with_open_subtask_dont_allow_closed_statuses
|
|
2102 |
test "test parent issues with open subtask dont allow closed statuses" do
|
|
2103 | 2103 |
parent = Issue.generate! |
2104 | 2104 |
child = Issue.generate!(:parent_issue_id => parent.id) |
2105 | 2105 |
app/views/settings/_issues.html.erb | ||
---|---|---|
7 | 7 | |
8 | 8 |
<p><%= setting_select :cross_project_subtasks, cross_project_subtasks_options %></p> |
9 | 9 | |
10 |
<p><%= setting_check_box :closed_parent_issues_with_open_subtasks %></p> |
|
11 | ||
10 | 12 |
<p><%= setting_check_box :close_duplicate_issues %></p> |
11 | 13 | |
12 | 14 |
<p><%= setting_check_box :issue_group_assignment %></p> |
config/locales/en.yml | ||
---|---|---|
417 | 417 |
setting_timespan_format: Time span format |
418 | 418 |
setting_cross_project_issue_relations: Allow cross-project issue relations |
419 | 419 |
setting_cross_project_subtasks: Allow cross-project subtasks |
420 |
setting_closed_parent_issues_with_open_subtasks: Allow closed parent issues with open subtasks |
|
420 | 421 |
setting_issue_list_default_columns: Isuses list defaults |
421 | 422 |
setting_repositories_encodings: Attachments and repositories encodings |
422 | 423 |
setting_emails_header: Email header |
config/settings.yml | ||
---|---|---|
177 | 177 |
default: 'derived' |
178 | 178 |
link_copied_issue: |
179 | 179 |
default: 'ask' |
180 |
closed_parent_issues_with_open_subtasks: |
|
181 |
default: 0 |
|
180 | 182 |
close_duplicate_issues: |
181 | 183 |
default: 1 |
182 | 184 |
issue_group_assignment: |
app/models/issue.rb | ||
---|---|---|
1008 | 1008 |
statuses << default_status if include_default || (new_record? && statuses.empty?) |
1009 | 1009 | |
1010 | 1010 |
statuses = statuses.compact.uniq.sort |
1011 |
if blocked? || descendants.open.any? |
|
1012 |
# cannot close a blocked issue or a parent with open subtasks |
|
1011 |
if blocked? || (!Setting.closed_parent_issues_with_open_subtasks? && descendants.open.any?) |
|
1013 | 1012 |
statuses.reject!(&:is_closed?) |
1014 | 1013 |
end |
1015 | 1014 |
if ancestors.open(false).any? |
test/unit/issue_test.rb | ||
---|---|---|
2099 | 2099 |
assert !closed_statuses.empty? |
2100 | 2100 |
end |
2101 | 2101 | |
2102 |
test "test parent issues with open subtask dont allow closed statuses" do |
|
2102 |
test "test parent issues with open subtask dont allow closed statuses if setting is false" do
|
|
2103 | 2103 |
parent = Issue.generate! |
2104 | 2104 |
child = Issue.generate!(:parent_issue_id => parent.id) |
2105 | ||
2106 |
allowed_statuses = parent.reload.new_statuses_allowed_to(users(:users_002)) |
|
2107 |
assert allowed_statuses.any? |
|
2108 |
assert_equal [], allowed_statuses.select(&:is_closed?) |
|
2105 |
with_settings :closed_parent_issues_with_open_subtasks => 0 do |
|
2106 |
allowed_statuses = parent.reload.new_statuses_allowed_to(users(:users_002)) |
|
2107 |
assert allowed_statuses.any? |
|
2108 |
assert_equal [], allowed_statuses.select(&:is_closed?) |
|
2109 |
end |
|
2110 |
end |
|
2111 | ||
2112 |
test "test parent issues with open subtask allow closed statuses if setting is true" do |
|
2113 |
parent = Issue.generate! |
|
2114 |
child = Issue.generate!(:parent_issue_id => parent.id) |
|
2115 |
with_settings :closed_parent_issues_with_open_subtasks => 1 do |
|
2116 |
allowed_statuses = parent.reload.new_statuses_allowed_to(users(:users_002)) |
|
2117 |
assert allowed_statuses.any? |
|
2118 |
assert allowed_statuses.select(&:is_closed?).any? |
|
2119 |
end |
|
2109 | 2120 |
end |
2110 | 2121 | |
2111 | 2122 |
def test_parent_issues_with_closed_subtask_allow_closed_statuses |