# HG changeset patch # User Toshi MARUYAMA # Date 1570533800 -32400 # Tue Oct 08 20:23:20 2019 +0900 # Branch issue-28492-02 # Node ID f6c528842c5466916bd5e3911d72458cb67fc020 # Parent af5e8c67f537f669dae5614343a39e3ecac370f7 use "test do" syntax for "test_parent_issues_with_open_subtask_dont_allow_closed_statuses" (#28492) diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb --- a/test/unit/issue_test.rb +++ b/test/unit/issue_test.rb @@ -2099,7 +2099,7 @@ class IssueTest < ActiveSupport::TestCas assert !closed_statuses.empty? end - def test_parent_issues_with_open_subtask_dont_allow_closed_statuses + test "test parent issues with open subtask dont allow closed statuses" do parent = Issue.generate! child = Issue.generate!(:parent_issue_id => parent.id) # HG changeset patch # User Toshi MARUYAMA # Date 1568636652 -32400 # Mon Sep 16 21:24:12 2019 +0900 # Branch issue-28492-02 # Node ID 77c350404d7b73455ad127834fa5af12016c7d44 # Parent f6c528842c5466916bd5e3911d72458cb67fc020 add setting (#28492) diff --git a/app/views/settings/_issues.html.erb b/app/views/settings/_issues.html.erb --- a/app/views/settings/_issues.html.erb +++ b/app/views/settings/_issues.html.erb @@ -7,6 +7,8 @@

<%= setting_select :cross_project_subtasks, cross_project_subtasks_options %>

+

<%= setting_check_box :closed_parent_issues_with_open_subtasks %>

+

<%= setting_check_box :close_duplicate_issues %>

<%= setting_check_box :issue_group_assignment %>

diff --git a/config/locales/en.yml b/config/locales/en.yml --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -417,6 +417,7 @@ en: setting_timespan_format: Time span format setting_cross_project_issue_relations: Allow cross-project issue relations setting_cross_project_subtasks: Allow cross-project subtasks + setting_closed_parent_issues_with_open_subtasks: Allow closed parent issues with open subtasks setting_issue_list_default_columns: Isuses list defaults setting_repositories_encodings: Attachments and repositories encodings setting_emails_header: Email header diff --git a/config/settings.yml b/config/settings.yml --- a/config/settings.yml +++ b/config/settings.yml @@ -177,6 +177,8 @@ parent_issue_done_ratio: default: 'derived' link_copied_issue: default: 'ask' +closed_parent_issues_with_open_subtasks: + default: 0 close_duplicate_issues: default: 1 issue_group_assignment: # HG changeset patch # User Toshi MARUYAMA # Date 1568768189 -32400 # Wed Sep 18 09:56:29 2019 +0900 # Branch issue-28492-02 # Node ID 1630a7f1e5a522c087ca9bf9b7aca8c795ff0d89 # Parent 77c350404d7b73455ad127834fa5af12016c7d44 implement (#28492) diff --git a/app/models/issue.rb b/app/models/issue.rb --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -1008,8 +1008,7 @@ class Issue < ActiveRecord::Base statuses << default_status if include_default || (new_record? && statuses.empty?) statuses = statuses.compact.uniq.sort - if blocked? || descendants.open.any? - # cannot close a blocked issue or a parent with open subtasks + if blocked? || (!Setting.closed_parent_issues_with_open_subtasks? && descendants.open.any?) statuses.reject!(&:is_closed?) end if ancestors.open(false).any? # HG changeset patch # User Toshi MARUYAMA # Date 1568773474 -32400 # Wed Sep 18 11:24:34 2019 +0900 # Branch issue-28492-02 # Node ID efa2c8cf3b310aec8e65d21eef86f44a8f9f03c8 # Parent 1630a7f1e5a522c087ca9bf9b7aca8c795ff0d89 add test (#28492) diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb --- a/test/unit/issue_test.rb +++ b/test/unit/issue_test.rb @@ -2099,13 +2099,24 @@ class IssueTest < ActiveSupport::TestCas assert !closed_statuses.empty? end - test "test parent issues with open subtask dont allow closed statuses" do + test "test parent issues with open subtask dont allow closed statuses if setting is false" do parent = Issue.generate! child = Issue.generate!(:parent_issue_id => parent.id) - - allowed_statuses = parent.reload.new_statuses_allowed_to(users(:users_002)) - assert allowed_statuses.any? - assert_equal [], allowed_statuses.select(&:is_closed?) + with_settings :closed_parent_issues_with_open_subtasks => 0 do + allowed_statuses = parent.reload.new_statuses_allowed_to(users(:users_002)) + assert allowed_statuses.any? + assert_equal [], allowed_statuses.select(&:is_closed?) + end + end + + test "test parent issues with open subtask allow closed statuses if setting is true" do + parent = Issue.generate! + child = Issue.generate!(:parent_issue_id => parent.id) + with_settings :closed_parent_issues_with_open_subtasks => 1 do + allowed_statuses = parent.reload.new_statuses_allowed_to(users(:users_002)) + assert allowed_statuses.any? + assert allowed_statuses.select(&:is_closed?).any? + end end def test_parent_issues_with_closed_subtask_allow_closed_statuses