From 88df849fedf214bd5a2ddf28180fca56a54935ee Mon Sep 17 00:00:00 2001 From: Marius BALTEANU Date: Wed, 28 Feb 2018 20:22:21 +0000 Subject: [PATCH 1/3] Option to configure which trackers can be set as subtasks for each tracker --- app/models/issue.rb | 8 ++++++- app/models/tracker.rb | 17 ++++++++++++- app/models/tracker_subtask.rb | 19 +++++++++++++++ app/views/trackers/_form.html.erb | 14 +++++++++++ .../20180226231035_create_tracker_subtask.rb | 10 ++++++++ ...0180227191840_allow_all_trackers_as_subtasks.rb | 11 +++++++++ test/fixtures/trackers_subtasks.yml | 28 ++++++++++++++++++++++ test/functional/attachments_controller_test.rb | 2 +- test/functional/context_menus_controller_test.rb | 1 + test/functional/custom_fields_controller_test.rb | 2 +- test/functional/files_controller_test.rb | 2 +- test/functional/imports_controller_test.rb | 2 +- test/functional/issue_relations_controller_test.rb | 1 + .../issues_controller_transaction_test.rb | 1 + test/functional/my_controller_test.rb | 2 +- test/functional/previews_controller_test.rb | 2 +- test/functional/projects_controller_test.rb | 2 +- test/functional/queries_controller_test.rb | 2 +- test/functional/reports_controller_test.rb | 2 +- test/functional/repositories_controller_test.rb | 2 +- .../repositories_subversion_controller_test.rb | 2 +- test/functional/roles_controller_test.rb | 2 +- test/functional/search_controller_test.rb | 2 +- .../search_custom_fields_visibility_test.rb | 1 + test/functional/settings_controller_test.rb | 2 +- test/functional/timelog_report_test.rb | 2 +- test/functional/trackers_controller_test.rb | 11 +++++++++ test/functional/versions_controller_test.rb | 2 +- test/functional/workflows_controller_test.rb | 2 +- test/integration/admin_test.rb | 2 +- .../integration/api_test/disabled_rest_api_test.rb | 2 +- test/integration/api_test/issue_relations_test.rb | 2 +- test/integration/api_test/issues_test.rb | 1 + test/integration/api_test/jsonp_test.rb | 2 +- test/integration/api_test/news_test.rb | 2 +- test/integration/api_test/projects_test.rb | 2 +- test/integration/api_test/search_test.rb | 2 +- test/integration/api_test/trackers_test.rb | 2 +- test/integration/application_test.rb | 2 +- test/integration/attachments_test.rb | 2 +- test/integration/feeds_test.rb | 2 +- test/integration/issues_test.rb | 1 + test/integration/layout_test.rb | 2 +- .../redmine/field_format/attachment_format_test.rb | 1 + test/integration/lib/redmine/menu_manager_test.rb | 2 +- test/object_helpers.rb | 6 +++++ test/unit/activity_test.rb | 2 +- test/unit/attachment_test.rb | 2 +- test/unit/attachment_transaction_test.rb | 2 +- test/unit/changeset_test.rb | 2 +- test/unit/custom_field_test.rb | 2 +- test/unit/enabled_module_test.rb | 2 +- test/unit/group_test.rb | 2 +- test/unit/issue_import_test.rb | 2 +- test/unit/issue_nested_set_concurrency_test.rb | 2 +- test/unit/issue_nested_set_test.rb | 2 +- test/unit/issue_relation_test.rb | 1 + test/unit/issue_subtasking_test.rb | 14 ++++++++++- test/unit/issue_test.rb | 2 +- test/unit/issue_transaction_test.rb | 2 +- test/unit/journal_test.rb | 2 +- test/unit/lib/redmine/helpers/gantt_test.rb | 1 + test/unit/mail_handler_test.rb | 2 +- test/unit/mailer_test.rb | 2 +- test/unit/project_members_inheritance_test.rb | 2 +- test/unit/project_test.rb | 2 +- test/unit/query_test.rb | 2 +- test/unit/repository_test.rb | 1 + test/unit/role_test.rb | 2 +- test/unit/search_test.rb | 1 + test/unit/time_entry_activity_test.rb | 2 +- test/unit/time_entry_query_test.rb | 2 +- test/unit/tracker_test.rb | 22 ++++++++++++++++- test/unit/user_test.rb | 2 +- test/unit/version_test.rb | 2 +- test/unit/watcher_test.rb | 2 +- test/unit/workflow_test.rb | 2 +- test/unit/workflow_transition_test.rb | 2 +- 78 files changed, 223 insertions(+), 60 deletions(-) create mode 100644 app/models/tracker_subtask.rb create mode 100644 db/migrate/20180226231035_create_tracker_subtask.rb create mode 100644 db/migrate/20180227191840_allow_all_trackers_as_subtasks.rb create mode 100644 test/fixtures/trackers_subtasks.yml diff --git a/app/models/issue.rb b/app/models/issue.rb index 8583d43..332436a 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -732,7 +732,7 @@ class Issue < ActiveRecord::Base end # Checks parent issue assignment - if @invalid_parent_issue_id.present? + if @invalid_parent_issue_id.present? || (@parent_issue && @parent_issue.id != parent_id_was && !valid_parent_tracker?(@parent_issue)) errors.add :parent_issue_id, :invalid elsif @parent_issue if !valid_parent_project?(@parent_issue) @@ -1434,6 +1434,12 @@ class Issue < ActiveRecord::Base end end + # Returns true if issue's parent is a valid + # parent tracker + def valid_parent_tracker?(issue=parent) + issue.tracker.allowed_subtask?(self.tracker_id) + end + # Returns an issue scope based on project and scope def self.cross_project_scope(project, scope=nil) if project.nil? diff --git a/app/models/tracker.rb b/app/models/tracker.rb index d90ab3e..5548751 100644 --- a/app/models/tracker.rb +++ b/app/models/tracker.rb @@ -25,11 +25,15 @@ class Tracker < ActiveRecord::Base CORE_FIELDS_ALL = (CORE_FIELDS_UNDISABLABLE + CORE_FIELDS).freeze before_destroy :check_integrity + after_save :remove_invalid_subtasks + belongs_to :default_status, :class_name => 'IssueStatus' has_many :issues has_many :workflow_rules, :dependent => :delete_all has_and_belongs_to_many :projects has_and_belongs_to_many :custom_fields, :class_name => 'IssueCustomField', :join_table => "#{table_name_prefix}custom_fields_trackers#{table_name_suffix}", :association_foreign_key => 'custom_field_id' + has_and_belongs_to_many :subtasks, :class_name => 'TrackerSubtask', :join_table => "#{table_name_prefix}trackers_subtasks#{table_name_suffix}", :association_foreign_key => 'subtask_id', :foreign_key => 'tracker_id' + has_and_belongs_to_many :parents, :class_name => 'TrackerSubtask', :join_table => "#{table_name_prefix}trackers_subtasks#{table_name_suffix}", :association_foreign_key => 'tracker_id', :foreign_key => 'subtask_id' acts_as_positioned validates_presence_of :default_status @@ -69,7 +73,8 @@ class Tracker < ActiveRecord::Base 'core_fields', 'position', 'custom_field_ids', - 'project_ids' + 'project_ids', + 'subtask_ids' def to_s; name end @@ -136,8 +141,18 @@ class Tracker < ActiveRecord::Base end end + def allowed_subtask?(subtask_id) + self.subtasks.where(:trackers_subtasks => { :subtask_id => subtask_id }).exists? + end + private def check_integrity raise Exception.new("Cannot delete tracker") if Issue.where(:tracker_id => self.id).any? end + + def remove_invalid_subtasks + if self.disabled_core_fields.include?('parent_issue_id') + self.parents.delete_all + end + end end diff --git a/app/models/tracker_subtask.rb b/app/models/tracker_subtask.rb new file mode 100644 index 0000000..94b2c35 --- /dev/null +++ b/app/models/tracker_subtask.rb @@ -0,0 +1,19 @@ +# Redmine - project management software +# Copyright (C) 2006-2017 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +class TrackerSubtask < Tracker +end diff --git a/app/views/trackers/_form.html.erb b/app/views/trackers/_form.html.erb index 3f5b88a..7cb92ea 100644 --- a/app/views/trackers/_form.html.erb +++ b/app/views/trackers/_form.html.erb @@ -54,4 +54,18 @@ end %> <%= hidden_field_tag('tracker[project_ids][]', '', :id => nil) %> <% end %> +
<%= toggle_checkboxes_link("#tracker_subtask_ids input[type=checkbox]:enabled") %><%= l(:label_subtask_plural) %> +<% subtask_ids = @tracker.subtask_ids %> +<% Tracker.sorted.all.each do |tracker| %> + <%= check_box_tag "tracker[subtask_ids][]", + tracker.id, + subtask_ids.include?(tracker.id), + :id => "subtask_#{tracker.id}", + :disabled => tracker.disabled_core_fields.include?('parent_issue_id')%> + +<% end %> +<%= hidden_field_tag('tracker[subtask_ids][]', '', :id => nil) %> +
diff --git a/db/migrate/20180226231035_create_tracker_subtask.rb b/db/migrate/20180226231035_create_tracker_subtask.rb new file mode 100644 index 0000000..ee54d7c --- /dev/null +++ b/db/migrate/20180226231035_create_tracker_subtask.rb @@ -0,0 +1,10 @@ +class CreateTrackerSubtask < ActiveRecord::Migration[5.1] + def change + create_table "trackers_subtasks", :id => false, :force => true do |t| + t.column "tracker_id", :integer, :default => 0, :null => false + t.column "subtask_id", :integer, :default => 0, :null => false + + t.index [:tracker_id, :subtask_id], :unique => true + end + end +end diff --git a/db/migrate/20180227191840_allow_all_trackers_as_subtasks.rb b/db/migrate/20180227191840_allow_all_trackers_as_subtasks.rb new file mode 100644 index 0000000..e1cdafc --- /dev/null +++ b/db/migrate/20180227191840_allow_all_trackers_as_subtasks.rb @@ -0,0 +1,11 @@ +class AllowAllTrackersAsSubtasks < ActiveRecord::Migration[5.1] + def change + trackers = Tracker.all + trackers_ids = trackers.pluck(:id) + + trackers.each do |tracker| + tracker.subtask_ids = trackers_ids + tracker.save + end + end +end diff --git a/test/fixtures/trackers_subtasks.yml b/test/fixtures/trackers_subtasks.yml new file mode 100644 index 0000000..19d22e8 --- /dev/null +++ b/test/fixtures/trackers_subtasks.yml @@ -0,0 +1,28 @@ +--- +trackers_subtasks_001: + tracker_id: 1 + subtask_id: 1 +trackers_subtasks_002: + tracker_id: 1 + subtask_id: 2 +trackers_subtasks_003: + tracker_id: 1 + subtask_id: 3 +trackers_subtasks_004: + tracker_id: 2 + subtask_id: 1 +trackers_subtasks_005: + tracker_id: 2 + subtask_id: 2 +trackers_subtasks_006: + tracker_id: 2 + subtask_id: 3 +trackers_subtasks_007: + tracker_id: 3 + subtask_id: 1 +trackers_subtasks_008: + tracker_id: 3 + subtask_id: 2 +trackers_subtasks_009: + tracker_id: 3 + subtask_id: 3 \ No newline at end of file diff --git a/test/functional/attachments_controller_test.rb b/test/functional/attachments_controller_test.rb index 016ed28..cae30de 100644 --- a/test/functional/attachments_controller_test.rb +++ b/test/functional/attachments_controller_test.rb @@ -21,7 +21,7 @@ require File.expand_path('../../test_helper', __FILE__) class AttachmentsControllerTest < Redmine::ControllerTest fixtures :users, :projects, :roles, :members, :member_roles, - :enabled_modules, :issues, :trackers, :attachments, + :enabled_modules, :issues, :trackers, :trackers_subtasks, :attachments, :versions, :wiki_pages, :wikis, :documents def setup diff --git a/test/functional/context_menus_controller_test.rb b/test/functional/context_menus_controller_test.rb index 60ffdb8..4a1efcb 100644 --- a/test/functional/context_menus_controller_test.rb +++ b/test/functional/context_menus_controller_test.rb @@ -20,6 +20,7 @@ require File.expand_path('../../test_helper', __FILE__) class ContextMenusControllerTest < Redmine::ControllerTest fixtures :projects, :trackers, + :trackers_subtasks, :projects_trackers, :roles, :member_roles, diff --git a/test/functional/custom_fields_controller_test.rb b/test/functional/custom_fields_controller_test.rb index b9030db..6470ff0 100644 --- a/test/functional/custom_fields_controller_test.rb +++ b/test/functional/custom_fields_controller_test.rb @@ -23,7 +23,7 @@ class CustomFieldsControllerTest < Redmine::ControllerTest :roles, :users, :members, :member_roles, :groups_users, - :trackers, :projects_trackers, + :trackers, :trackers_subtasks, :projects_trackers, :enabled_modules, :projects, :issues, :issue_statuses, diff --git a/test/functional/files_controller_test.rb b/test/functional/files_controller_test.rb index 03c194e..13f2935 100644 --- a/test/functional/files_controller_test.rb +++ b/test/functional/files_controller_test.rb @@ -18,7 +18,7 @@ require File.expand_path('../../test_helper', __FILE__) class FilesControllerTest < Redmine::ControllerTest - fixtures :projects, :trackers, :issue_statuses, :issues, + fixtures :projects, :trackers, :trackers_subtasks, :issue_statuses, :issues, :enumerations, :users, :email_addresses, :issue_categories, diff --git a/test/functional/imports_controller_test.rb b/test/functional/imports_controller_test.rb index 2802d15..b2a81ef 100644 --- a/test/functional/imports_controller_test.rb +++ b/test/functional/imports_controller_test.rb @@ -22,7 +22,7 @@ class ImportsControllerTest < Redmine::ControllerTest :users, :email_addresses, :roles, :members, :member_roles, :issues, :issue_statuses, - :trackers, :projects_trackers, + :trackers, :trackers_subtasks, :projects_trackers, :versions, :issue_categories, :enumerations, diff --git a/test/functional/issue_relations_controller_test.rb b/test/functional/issue_relations_controller_test.rb index 1842786..3986e2f 100644 --- a/test/functional/issue_relations_controller_test.rb +++ b/test/functional/issue_relations_controller_test.rb @@ -29,6 +29,7 @@ class IssueRelationsControllerTest < Redmine::ControllerTest :enabled_modules, :enumerations, :trackers, + :trackers_subtasks, :projects_trackers def setup diff --git a/test/functional/issues_controller_transaction_test.rb b/test/functional/issues_controller_transaction_test.rb index 28ac868..0071086 100644 --- a/test/functional/issues_controller_transaction_test.rb +++ b/test/functional/issues_controller_transaction_test.rb @@ -29,6 +29,7 @@ class IssuesControllerTransactionTest < Redmine::ControllerTest :issue_statuses, :versions, :trackers, + :trackers_subtasks, :projects_trackers, :issue_categories, :enabled_modules, diff --git a/test/functional/my_controller_test.rb b/test/functional/my_controller_test.rb index 6a618c4..35e875d 100644 --- a/test/functional/my_controller_test.rb +++ b/test/functional/my_controller_test.rb @@ -19,7 +19,7 @@ require File.expand_path('../../test_helper', __FILE__) class MyControllerTest < Redmine::ControllerTest fixtures :users, :email_addresses, :user_preferences, :roles, :projects, :members, :member_roles, - :issues, :issue_statuses, :trackers, :enumerations, :custom_fields, :auth_sources, :queries + :issues, :issue_statuses, :trackers, :trackers_subtasks, :enumerations, :custom_fields, :auth_sources, :queries def setup @request.session[:user_id] = 2 diff --git a/test/functional/previews_controller_test.rb b/test/functional/previews_controller_test.rb index 65fb9ae..5db65a5 100644 --- a/test/functional/previews_controller_test.rb +++ b/test/functional/previews_controller_test.rb @@ -18,7 +18,7 @@ require File.expand_path('../../test_helper', __FILE__) class PreviewsControllerTest < Redmine::ControllerTest - fixtures :projects, :trackers, :issue_statuses, :issues, + fixtures :projects, :trackers, :trackers_subtasks, :issue_statuses, :issues, :enumerations, :users, :issue_categories, :projects_trackers, :roles, diff --git a/test/functional/projects_controller_test.rb b/test/functional/projects_controller_test.rb index 7748089..ac6866f 100644 --- a/test/functional/projects_controller_test.rb +++ b/test/functional/projects_controller_test.rb @@ -20,7 +20,7 @@ require File.expand_path('../../test_helper', __FILE__) class ProjectsControllerTest < Redmine::ControllerTest fixtures :projects, :versions, :users, :email_addresses, :roles, :members, :member_roles, :issues, :journals, :journal_details, - :trackers, :projects_trackers, :issue_statuses, + :trackers, :trackers_subtasks, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations, :boards, :messages, :attachments, :custom_fields, :custom_values, :time_entries, :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions diff --git a/test/functional/queries_controller_test.rb b/test/functional/queries_controller_test.rb index de4be4c..bbd5534 100644 --- a/test/functional/queries_controller_test.rb +++ b/test/functional/queries_controller_test.rb @@ -21,7 +21,7 @@ class QueriesControllerTest < Redmine::ControllerTest fixtures :projects, :enabled_modules, :users, :email_addresses, :members, :member_roles, :roles, - :trackers, :issue_statuses, :issue_categories, :enumerations, :versions, + :trackers, :trackers_subtasks, :issue_statuses, :issue_categories, :enumerations, :versions, :issues, :custom_fields, :custom_values, :queries diff --git a/test/functional/reports_controller_test.rb b/test/functional/reports_controller_test.rb index 63a882a..44f5a7f 100644 --- a/test/functional/reports_controller_test.rb +++ b/test/functional/reports_controller_test.rb @@ -18,7 +18,7 @@ require File.expand_path('../../test_helper', __FILE__) class ReportsControllerTest < Redmine::ControllerTest - fixtures :projects, :trackers, :issue_statuses, :issues, + fixtures :projects, :trackers, :trackers_subtasks, :issue_statuses, :issues, :enumerations, :users, :issue_categories, :projects_trackers, :roles, diff --git a/test/functional/repositories_controller_test.rb b/test/functional/repositories_controller_test.rb index e76a2f8..263a9e0 100644 --- a/test/functional/repositories_controller_test.rb +++ b/test/functional/repositories_controller_test.rb @@ -20,7 +20,7 @@ require File.expand_path('../../test_helper', __FILE__) class RepositoriesControllerTest < Redmine::RepositoryControllerTest fixtures :projects, :users, :email_addresses, :roles, :members, :member_roles, :enabled_modules, :repositories, :issues, :issue_statuses, :changesets, :changes, - :issue_categories, :enumerations, :custom_fields, :custom_values, :trackers + :issue_categories, :enumerations, :custom_fields, :custom_values, :trackers, :trackers_subtasks def setup super diff --git a/test/functional/repositories_subversion_controller_test.rb b/test/functional/repositories_subversion_controller_test.rb index f8f4b8f..d7c5449 100644 --- a/test/functional/repositories_subversion_controller_test.rb +++ b/test/functional/repositories_subversion_controller_test.rb @@ -22,7 +22,7 @@ class RepositoriesSubversionControllerTest < Redmine::RepositoryControllerTest fixtures :projects, :users, :email_addresses, :roles, :members, :member_roles, :enabled_modules, :repositories, :issues, :issue_statuses, :changesets, :changes, - :issue_categories, :enumerations, :custom_fields, :custom_values, :trackers + :issue_categories, :enumerations, :custom_fields, :custom_values, :trackers, :trackers_subtasks PRJ_ID = 3 NUM_REV = 11 diff --git a/test/functional/roles_controller_test.rb b/test/functional/roles_controller_test.rb index 07167e8..5982d19 100644 --- a/test/functional/roles_controller_test.rb +++ b/test/functional/roles_controller_test.rb @@ -18,7 +18,7 @@ require File.expand_path('../../test_helper', __FILE__) class RolesControllerTest < Redmine::ControllerTest - fixtures :roles, :users, :members, :member_roles, :workflows, :trackers + fixtures :roles, :users, :members, :member_roles, :workflows, :trackers, :trackers_subtasks def setup User.current = nil diff --git a/test/functional/search_controller_test.rb b/test/functional/search_controller_test.rb index aace89a..0f33b96 100644 --- a/test/functional/search_controller_test.rb +++ b/test/functional/search_controller_test.rb @@ -20,7 +20,7 @@ require File.expand_path('../../test_helper', __FILE__) class SearchControllerTest < Redmine::ControllerTest fixtures :projects, :projects_trackers, :enabled_modules, :roles, :users, :members, :member_roles, - :issues, :trackers, :issue_statuses, :enumerations, + :issues, :trackers, :trackers_subtasks, :issue_statuses, :enumerations, :workflows, :custom_fields, :custom_values, :custom_fields_projects, :custom_fields_trackers, diff --git a/test/functional/search_custom_fields_visibility_test.rb b/test/functional/search_custom_fields_visibility_test.rb index 6e995e1..67d14eb 100644 --- a/test/functional/search_custom_fields_visibility_test.rb +++ b/test/functional/search_custom_fields_visibility_test.rb @@ -26,6 +26,7 @@ class SearchCustomFieldsVisibilityTest < Redmine::ControllerTest :member_roles, :issue_statuses, :trackers, + :trackers_subtasks, :projects_trackers, :enabled_modules, :enumerations, diff --git a/test/functional/settings_controller_test.rb b/test/functional/settings_controller_test.rb index 4c10191..9561d22 100644 --- a/test/functional/settings_controller_test.rb +++ b/test/functional/settings_controller_test.rb @@ -18,7 +18,7 @@ require File.expand_path('../../test_helper', __FILE__) class SettingsControllerTest < Redmine::ControllerTest - fixtures :projects, :trackers, :issue_statuses, :issues, + fixtures :projects, :trackers, :trackers_subtasks, :issue_statuses, :issues, :users def setup diff --git a/test/functional/timelog_report_test.rb b/test/functional/timelog_report_test.rb index 332b13a..6c043b8 100644 --- a/test/functional/timelog_report_test.rb +++ b/test/functional/timelog_report_test.rb @@ -23,7 +23,7 @@ class TimelogReportTest < Redmine::ControllerTest fixtures :projects, :enabled_modules, :roles, :members, :member_roles, :email_addresses, - :issues, :time_entries, :users, :trackers, :enumerations, + :issues, :time_entries, :users, :trackers, :trackers_subtasks, :enumerations, :issue_statuses, :custom_fields, :custom_values, :projects_trackers, :custom_fields_trackers, :custom_fields_projects diff --git a/test/functional/trackers_controller_test.rb b/test/functional/trackers_controller_test.rb index cd6fcce..084cfaa 100644 --- a/test/functional/trackers_controller_test.rb +++ b/test/functional/trackers_controller_test.rb @@ -240,4 +240,15 @@ class TrackersControllerTest < Redmine::ControllerTest assert_equal [], tracker.core_fields assert_equal [], tracker.custom_field_ids.sort end + + def test_tracker_with_parent_task_field_disabled_should_be_shown_as_disabled_in_subtasks_section + tracker = Tracker.find(1) + tracker.core_fields = %w(assigned_to_id due_date) + tracker.save! + + get :edit, :params => {:id => 3} + assert_response :success + + assert_select 'input[id=?][disabled=?]', 'subtask_1', 'disabled' + end end diff --git a/test/functional/versions_controller_test.rb b/test/functional/versions_controller_test.rb index 3d5af8d..f0f4bb5 100644 --- a/test/functional/versions_controller_test.rb +++ b/test/functional/versions_controller_test.rb @@ -19,7 +19,7 @@ require File.expand_path('../../test_helper', __FILE__) class VersionsControllerTest < Redmine::ControllerTest fixtures :projects, :enabled_modules, - :trackers, :projects_trackers, + :trackers, :trackers_subtasks, :projects_trackers, :versions, :issue_statuses, :issue_categories, :enumerations, :issues, :users, :email_addresses, diff --git a/test/functional/workflows_controller_test.rb b/test/functional/workflows_controller_test.rb index e1a58c3..22abbd2 100644 --- a/test/functional/workflows_controller_test.rb +++ b/test/functional/workflows_controller_test.rb @@ -18,7 +18,7 @@ require File.expand_path('../../test_helper', __FILE__) class WorkflowsControllerTest < Redmine::ControllerTest - fixtures :roles, :trackers, :workflows, :users, :issue_statuses + fixtures :roles, :trackers, :trackers_subtasks, :workflows, :users, :issue_statuses def setup User.current = nil diff --git a/test/integration/admin_test.rb b/test/integration/admin_test.rb index e7f6f0e..7356156 100644 --- a/test/integration/admin_test.rb +++ b/test/integration/admin_test.rb @@ -18,7 +18,7 @@ require File.expand_path('../../test_helper', __FILE__) class AdminTest < Redmine::IntegrationTest - fixtures :projects, :trackers, :issue_statuses, :issues, + fixtures :projects, :trackers, :trackers_subtasks, :issue_statuses, :issues, :enumerations, :users, :issue_categories, :projects_trackers, :roles, diff --git a/test/integration/api_test/disabled_rest_api_test.rb b/test/integration/api_test/disabled_rest_api_test.rb index f0283ba..d0d6acf 100644 --- a/test/integration/api_test/disabled_rest_api_test.rb +++ b/test/integration/api_test/disabled_rest_api_test.rb @@ -18,7 +18,7 @@ require File.expand_path('../../../test_helper', __FILE__) class Redmine::ApiTest::DisabledRestApiTest < Redmine::ApiTest::Base - fixtures :projects, :trackers, :issue_statuses, :issues, + fixtures :projects, :trackers, :trackers_subtasks, :issue_statuses, :issues, :enumerations, :users, :issue_categories, :projects_trackers, :roles, diff --git a/test/integration/api_test/issue_relations_test.rb b/test/integration/api_test/issue_relations_test.rb index 79c16d9..0e9dc50 100644 --- a/test/integration/api_test/issue_relations_test.rb +++ b/test/integration/api_test/issue_relations_test.rb @@ -18,7 +18,7 @@ require File.expand_path('../../../test_helper', __FILE__) class Redmine::ApiTest::IssueRelationsTest < Redmine::ApiTest::Base - fixtures :projects, :trackers, :issue_statuses, :issues, + fixtures :projects, :trackers, :trackers_subtasks, :issue_statuses, :issues, :enumerations, :users, :issue_categories, :projects_trackers, :roles, diff --git a/test/integration/api_test/issues_test.rb b/test/integration/api_test/issues_test.rb index fc58014..693cc34 100644 --- a/test/integration/api_test/issues_test.rb +++ b/test/integration/api_test/issues_test.rb @@ -28,6 +28,7 @@ class Redmine::ApiTest::IssuesTest < Redmine::ApiTest::Base :issue_relations, :versions, :trackers, + :trackers_subtasks, :projects_trackers, :issue_categories, :enabled_modules, diff --git a/test/integration/api_test/jsonp_test.rb b/test/integration/api_test/jsonp_test.rb index 3a148e0..8743c89 100644 --- a/test/integration/api_test/jsonp_test.rb +++ b/test/integration/api_test/jsonp_test.rb @@ -18,7 +18,7 @@ require File.expand_path('../../../test_helper', __FILE__) class Redmine::ApiTest::JsonpTest < Redmine::ApiTest::Base - fixtures :trackers + fixtures :trackers, :trackers_subtasks def test_should_ignore_jsonp_callback_with_jsonp_disabled with_settings :jsonp_enabled => '0' do diff --git a/test/integration/api_test/news_test.rb b/test/integration/api_test/news_test.rb index 2f96162..8e30c00 100644 --- a/test/integration/api_test/news_test.rb +++ b/test/integration/api_test/news_test.rb @@ -18,7 +18,7 @@ require File.expand_path('../../../test_helper', __FILE__) class Redmine::ApiTest::NewsTest < Redmine::ApiTest::Base - fixtures :projects, :trackers, :issue_statuses, :issues, + fixtures :projects, :trackers, :trackers_subtasks, :issue_statuses, :issues, :enumerations, :users, :issue_categories, :projects_trackers, :roles, diff --git a/test/integration/api_test/projects_test.rb b/test/integration/api_test/projects_test.rb index f5d1e69..faeade4 100644 --- a/test/integration/api_test/projects_test.rb +++ b/test/integration/api_test/projects_test.rb @@ -19,7 +19,7 @@ require File.expand_path('../../../test_helper', __FILE__) class Redmine::ApiTest::ProjectsTest < Redmine::ApiTest::Base fixtures :projects, :versions, :users, :roles, :members, :member_roles, :issues, :journals, :journal_details, - :trackers, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations, :boards, :messages, + :trackers, :trackers_subtasks, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations, :boards, :messages, :attachments, :custom_fields, :custom_values, :time_entries, :issue_categories def setup diff --git a/test/integration/api_test/search_test.rb b/test/integration/api_test/search_test.rb index 2c14ed4..8c97be3 100644 --- a/test/integration/api_test/search_test.rb +++ b/test/integration/api_test/search_test.rb @@ -20,7 +20,7 @@ require File.expand_path('../../../test_helper', __FILE__) class Redmine::ApiTest::SearchTest < Redmine::ApiTest::Base fixtures :projects, :projects_trackers, :enabled_modules, :roles, :users, :members, :member_roles, - :issues, :trackers, :issue_statuses, :enumerations, + :issues, :trackers, :trackers_subtasks, :issue_statuses, :enumerations, :workflows, :custom_fields, :custom_values, :custom_fields_projects, :custom_fields_trackers, diff --git a/test/integration/api_test/trackers_test.rb b/test/integration/api_test/trackers_test.rb index df2a6ed..c8b1e3a 100644 --- a/test/integration/api_test/trackers_test.rb +++ b/test/integration/api_test/trackers_test.rb @@ -18,7 +18,7 @@ require File.expand_path('../../../test_helper', __FILE__) class Redmine::ApiTest::TrackersTest < Redmine::ApiTest::Base - fixtures :trackers + fixtures :trackers, :trackers_subtasks test "GET /trackers.xml should return trackers" do get '/trackers.xml' diff --git a/test/integration/application_test.rb b/test/integration/application_test.rb index 7990b42..4a2a6e3 100644 --- a/test/integration/application_test.rb +++ b/test/integration/application_test.rb @@ -20,7 +20,7 @@ require File.expand_path('../../test_helper', __FILE__) class ApplicationTest < Redmine::IntegrationTest include Redmine::I18n - fixtures :projects, :trackers, :issue_statuses, :issues, + fixtures :projects, :trackers, :trackers_subtasks, :issue_statuses, :issues, :enumerations, :users, :issue_categories, :projects_trackers, :roles, diff --git a/test/integration/attachments_test.rb b/test/integration/attachments_test.rb index 6fd58ed..d1194fb 100644 --- a/test/integration/attachments_test.rb +++ b/test/integration/attachments_test.rb @@ -21,7 +21,7 @@ class AttachmentsTest < Redmine::IntegrationTest fixtures :projects, :enabled_modules, :users, :email_addresses, :roles, :members, :member_roles, - :trackers, :projects_trackers, + :trackers, :trackers_subtasks, :projects_trackers, :issues, :issue_statuses, :enumerations, :attachments diff --git a/test/integration/feeds_test.rb b/test/integration/feeds_test.rb index 192c289..f2876ce 100644 --- a/test/integration/feeds_test.rb +++ b/test/integration/feeds_test.rb @@ -18,7 +18,7 @@ require File.expand_path('../../test_helper', __FILE__) class FeedsTest < Redmine::IntegrationTest - fixtures :projects, :trackers, :issue_statuses, :issues, + fixtures :projects, :trackers, :trackers_subtasks, :issue_statuses, :issues, :enumerations, :users, :issue_categories, :projects_trackers, :enabled_modules, :roles, :member_roles, :members diff --git a/test/integration/issues_test.rb b/test/integration/issues_test.rb index ddcdd0f..8c48622 100644 --- a/test/integration/issues_test.rb +++ b/test/integration/issues_test.rb @@ -24,6 +24,7 @@ class IssuesTest < Redmine::IntegrationTest :members, :member_roles, :trackers, + :trackers_subtasks, :projects_trackers, :enabled_modules, :issue_statuses, diff --git a/test/integration/layout_test.rb b/test/integration/layout_test.rb index a529432..57b4fb4 100644 --- a/test/integration/layout_test.rb +++ b/test/integration/layout_test.rb @@ -18,7 +18,7 @@ require File.expand_path('../../test_helper', __FILE__) class LayoutTest < Redmine::IntegrationTest - fixtures :projects, :trackers, :issue_statuses, :issues, + fixtures :projects, :trackers, :trackers_subtasks, :issue_statuses, :issues, :enumerations, :users, :issue_categories, :projects_trackers, :roles, diff --git a/test/integration/lib/redmine/field_format/attachment_format_test.rb b/test/integration/lib/redmine/field_format/attachment_format_test.rb index 759a73b..79ff5b8 100644 --- a/test/integration/lib/redmine/field_format/attachment_format_test.rb +++ b/test/integration/lib/redmine/field_format/attachment_format_test.rb @@ -24,6 +24,7 @@ class AttachmentFieldFormatTest < Redmine::IntegrationTest :members, :member_roles, :trackers, + :trackers_subtasks, :projects_trackers, :enabled_modules, :issue_statuses, diff --git a/test/integration/lib/redmine/menu_manager_test.rb b/test/integration/lib/redmine/menu_manager_test.rb index 0b01f5d..ceb68f5 100644 --- a/test/integration/lib/redmine/menu_manager_test.rb +++ b/test/integration/lib/redmine/menu_manager_test.rb @@ -20,7 +20,7 @@ require File.expand_path('../../../../test_helper', __FILE__) class MenuManagerTest < Redmine::IntegrationTest include Redmine::I18n - fixtures :projects, :trackers, :issue_statuses, :issues, + fixtures :projects, :trackers, :trackers_subtasks, :issue_statuses, :issues, :enumerations, :users, :issue_categories, :projects_trackers, :roles, diff --git a/test/object_helpers.rb b/test/object_helpers.rb index b7d2eac..8b3548f 100644 --- a/test/object_helpers.rb +++ b/test/object_helpers.rb @@ -65,6 +65,7 @@ module ObjectHelpers @generated_tracker_name.succ! tracker = Tracker.new(attributes) tracker.name = @generated_tracker_name.dup if tracker.name.blank? + tracker.subtask_ids = [1, 2, 3, tracker.id] tracker.default_status ||= IssueStatus.order(:position).first || IssueStatus.generate! yield tracker if block_given? tracker @@ -76,6 +77,11 @@ module ObjectHelpers tracker end + def Tracker.add_subtasks(tracker, subtask_ids) + tracker.subtask_ids = subtask_ids + tracker.save! + end + def Role.generate!(attributes={}) @generated_role_name ||= 'Role 0' @generated_role_name.succ! diff --git a/test/unit/activity_test.rb b/test/unit/activity_test.rb index a14203d..916c6dd 100644 --- a/test/unit/activity_test.rb +++ b/test/unit/activity_test.rb @@ -19,7 +19,7 @@ require File.expand_path('../../test_helper', __FILE__) class ActivityTest < ActiveSupport::TestCase fixtures :projects, :versions, :attachments, :users, :roles, :members, :member_roles, :issues, :journals, :journal_details, - :trackers, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations, :boards, :messages, :time_entries, + :trackers, :trackers_subtasks, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations, :boards, :messages, :time_entries, :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions def setup diff --git a/test/unit/attachment_test.rb b/test/unit/attachment_test.rb index dcad6f2..b683622 100644 --- a/test/unit/attachment_test.rb +++ b/test/unit/attachment_test.rb @@ -21,7 +21,7 @@ require File.expand_path('../../test_helper', __FILE__) class AttachmentTest < ActiveSupport::TestCase fixtures :users, :email_addresses, :projects, :roles, :members, :member_roles, - :enabled_modules, :issues, :trackers, :attachments + :enabled_modules, :issues, :trackers, :trackers_subtasks, :attachments def setup set_tmp_attachments_directory diff --git a/test/unit/attachment_transaction_test.rb b/test/unit/attachment_transaction_test.rb index b0f1333..bf4be28 100644 --- a/test/unit/attachment_transaction_test.rb +++ b/test/unit/attachment_transaction_test.rb @@ -21,7 +21,7 @@ require File.expand_path('../../test_helper', __FILE__) class AttachmentTest < ActiveSupport::TestCase fixtures :users, :email_addresses, :projects, :roles, :members, :member_roles, - :enabled_modules, :issues, :trackers, :attachments + :enabled_modules, :issues, :trackers, :trackers_subtasks, :attachments self.use_transactional_tests = false diff --git a/test/unit/changeset_test.rb b/test/unit/changeset_test.rb index 8586d8f..ff67b5e 100644 --- a/test/unit/changeset_test.rb +++ b/test/unit/changeset_test.rb @@ -29,7 +29,7 @@ class ChangesetTest < ActiveSupport::TestCase :custom_fields, :custom_values, :users, :members, :member_roles, :email_addresses, - :trackers, :projects_trackers, + :trackers, :trackers_subtasks, :projects_trackers, :enabled_modules, :roles def test_ref_keywords_any diff --git a/test/unit/custom_field_test.rb b/test/unit/custom_field_test.rb index 3eae54e..d301311 100644 --- a/test/unit/custom_field_test.rb +++ b/test/unit/custom_field_test.rb @@ -19,7 +19,7 @@ require File.expand_path('../../test_helper', __FILE__) class CustomFieldTest < ActiveSupport::TestCase fixtures :custom_fields, :roles, :projects, - :trackers, :issue_statuses, + :trackers, :trackers_subtasks, :issue_statuses, :issues def test_create diff --git a/test/unit/enabled_module_test.rb b/test/unit/enabled_module_test.rb index eae68fb..888f950 100644 --- a/test/unit/enabled_module_test.rb +++ b/test/unit/enabled_module_test.rb @@ -18,7 +18,7 @@ require File.expand_path('../../test_helper', __FILE__) class EnabledModuleTest < ActiveSupport::TestCase - fixtures :projects, :trackers, :issue_statuses, :wikis + fixtures :projects, :trackers, :trackers_subtasks, :issue_statuses, :wikis def test_enabling_wiki_should_create_a_wiki CustomField.delete_all diff --git a/test/unit/group_test.rb b/test/unit/group_test.rb index 8756f31..4d3acae 100644 --- a/test/unit/group_test.rb +++ b/test/unit/group_test.rb @@ -18,7 +18,7 @@ require File.expand_path('../../test_helper', __FILE__) class GroupTest < ActiveSupport::TestCase - fixtures :projects, :trackers, :issue_statuses, :issues, + fixtures :projects, :trackers, :trackers_subtasks, :issue_statuses, :issues, :enumerations, :users, :projects_trackers, :roles, diff --git a/test/unit/issue_import_test.rb b/test/unit/issue_import_test.rb index bcbf942..4d1d681 100644 --- a/test/unit/issue_import_test.rb +++ b/test/unit/issue_import_test.rb @@ -22,7 +22,7 @@ class IssueImportTest < ActiveSupport::TestCase :users, :email_addresses, :roles, :members, :member_roles, :issues, :issue_statuses, - :trackers, :projects_trackers, + :trackers, :trackers_subtasks, :projects_trackers, :versions, :issue_categories, :enumerations, diff --git a/test/unit/issue_nested_set_concurrency_test.rb b/test/unit/issue_nested_set_concurrency_test.rb index 125131e..cdc76cc 100644 --- a/test/unit/issue_nested_set_concurrency_test.rb +++ b/test/unit/issue_nested_set_concurrency_test.rb @@ -19,7 +19,7 @@ require File.expand_path('../../test_helper', __FILE__) class IssueNestedSetConcurrencyTest < ActiveSupport::TestCase fixtures :projects, :users, - :trackers, :projects_trackers, + :trackers, :trackers_subtasks, :projects_trackers, :enabled_modules, :issue_statuses, :enumerations diff --git a/test/unit/issue_nested_set_test.rb b/test/unit/issue_nested_set_test.rb index f42fa40..3ba3b4a 100644 --- a/test/unit/issue_nested_set_test.rb +++ b/test/unit/issue_nested_set_test.rb @@ -19,7 +19,7 @@ require File.expand_path('../../test_helper', __FILE__) class IssueNestedSetTest < ActiveSupport::TestCase fixtures :projects, :users, :roles, - :trackers, :projects_trackers, + :trackers, :trackers_subtasks, :projects_trackers, :issue_statuses, :issue_categories, :issue_relations, :enumerations, :issues diff --git a/test/unit/issue_relation_test.rb b/test/unit/issue_relation_test.rb index 585a829..be3cb72 100644 --- a/test/unit/issue_relation_test.rb +++ b/test/unit/issue_relation_test.rb @@ -29,6 +29,7 @@ class IssueRelationTest < ActiveSupport::TestCase :enabled_modules, :enumerations, :trackers, + :trackers_subtasks, :projects_trackers include Redmine::I18n diff --git a/test/unit/issue_subtasking_test.rb b/test/unit/issue_subtasking_test.rb index 00d64a0..6d8ee4e 100644 --- a/test/unit/issue_subtasking_test.rb +++ b/test/unit/issue_subtasking_test.rb @@ -19,7 +19,7 @@ require File.expand_path('../../test_helper', __FILE__) class IssueSubtaskingTest < ActiveSupport::TestCase fixtures :projects, :users, :roles, :members, :member_roles, - :trackers, :projects_trackers, + :trackers,:trackers_subtasks, :projects_trackers, :issue_statuses, :issue_categories, :enumerations, :issues, :enabled_modules, @@ -350,4 +350,16 @@ class IssueSubtaskingTest < ActiveSupport::TestCase assert !child.save assert_include I18n.t("activerecord.errors.messages.open_issue_with_closed_parent"), child.errors.full_messages end + + def test_parent_issue_with_invalid_subtask_should_not_validate + tracker = Tracker.find(1) + tracker.subtask_ids = [1, 3] + + parent = Issue.generate!(:status_id => 5, :tracker_id => 1) + child = Issue.generate!(:tracker_id => 2) + + child.parent_issue_id = parent.id + assert !child.save + assert_include 'Parent task is invalid', child.errors.full_messages + end end diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb index 880c0a6..95970a5 100644 --- a/test/unit/issue_test.rb +++ b/test/unit/issue_test.rb @@ -20,7 +20,7 @@ require File.expand_path('../../test_helper', __FILE__) class IssueTest < ActiveSupport::TestCase fixtures :projects, :users, :email_addresses, :user_preferences, :members, :member_roles, :roles, :groups_users, - :trackers, :projects_trackers, + :trackers, :trackers_subtasks, :projects_trackers, :enabled_modules, :versions, :issue_statuses, :issue_categories, :issue_relations, :workflows, diff --git a/test/unit/issue_transaction_test.rb b/test/unit/issue_transaction_test.rb index f944ffe..f5bdd3f 100644 --- a/test/unit/issue_transaction_test.rb +++ b/test/unit/issue_transaction_test.rb @@ -19,7 +19,7 @@ require File.expand_path('../../test_helper', __FILE__) class IssueTransactionTest < ActiveSupport::TestCase fixtures :projects, :users, :members, :member_roles, :roles, - :trackers, :projects_trackers, + :trackers, :trackers_subtasks, :projects_trackers, :versions, :issue_statuses, :issue_categories, :issue_relations, :workflows, :enumerations, diff --git a/test/unit/journal_test.rb b/test/unit/journal_test.rb index cca405a..95b2f1e 100644 --- a/test/unit/journal_test.rb +++ b/test/unit/journal_test.rb @@ -23,7 +23,7 @@ class JournalTest < ActiveSupport::TestCase :users, :members, :member_roles, :roles, :enabled_modules, :groups_users, :email_addresses, :enumerations, - :projects_trackers, :trackers, :custom_fields + :projects_trackers, :trackers, :trackers_subtasks, :custom_fields def setup @journal = Journal.find 1 diff --git a/test/unit/lib/redmine/helpers/gantt_test.rb b/test/unit/lib/redmine/helpers/gantt_test.rb index 351f9c0..e8b8127 100644 --- a/test/unit/lib/redmine/helpers/gantt_test.rb +++ b/test/unit/lib/redmine/helpers/gantt_test.rb @@ -109,6 +109,7 @@ class Redmine::Helpers::GanttHelperTest < Redmine::HelperTest create_gantt @project.enabled_module_names = [:issue_tracking] @tracker = Tracker.generate! + Tracker.add_subtasks(@tracker, [1, 2, 3, @tracker.id]) @project.trackers << @tracker @version = Version.generate!(:effective_date => (today + 7), :sharing => 'none') @project.versions << @version diff --git a/test/unit/mail_handler_test.rb b/test/unit/mail_handler_test.rb index 62875b9..03a0ee3 100644 --- a/test/unit/mail_handler_test.rb +++ b/test/unit/mail_handler_test.rb @@ -24,7 +24,7 @@ class MailHandlerTest < ActiveSupport::TestCase :members, :member_roles, :users, :email_addresses, :user_preferences, :issues, :issue_statuses, - :workflows, :trackers, :projects_trackers, + :workflows, :trackers, :trackers_subtasks, :projects_trackers, :versions, :enumerations, :issue_categories, :custom_fields, :custom_fields_trackers, :custom_fields_projects, :boards, :messages diff --git a/test/unit/mailer_test.rb b/test/unit/mailer_test.rb index 36f028d..69ab577 100644 --- a/test/unit/mailer_test.rb +++ b/test/unit/mailer_test.rb @@ -25,7 +25,7 @@ class MailerTest < ActiveSupport::TestCase fixtures :projects, :enabled_modules, :issues, :users, :email_addresses, :user_preferences, :members, :member_roles, :roles, :documents, :attachments, :news, :tokens, :journals, :journal_details, :changesets, - :trackers, :projects_trackers, + :trackers, :trackers_subtasks, :projects_trackers, :issue_statuses, :enumerations, :messages, :boards, :repositories, :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions, :versions, diff --git a/test/unit/project_members_inheritance_test.rb b/test/unit/project_members_inheritance_test.rb index 849c22c..df8e0bd 100644 --- a/test/unit/project_members_inheritance_test.rb +++ b/test/unit/project_members_inheritance_test.rb @@ -19,7 +19,7 @@ require File.expand_path('../../test_helper', __FILE__) class ProjectMembersInheritanceTest < ActiveSupport::TestCase fixtures :roles, :users, - :projects, :trackers, :issue_statuses + :projects, :trackers, :trackers_subtasks, :issue_statuses def setup @parent = Project.generate! diff --git a/test/unit/project_test.rb b/test/unit/project_test.rb index ec28b4d..d9ba8b3 100644 --- a/test/unit/project_test.rb +++ b/test/unit/project_test.rb @@ -18,7 +18,7 @@ require File.expand_path('../../test_helper', __FILE__) class ProjectTest < ActiveSupport::TestCase - fixtures :projects, :trackers, :issue_statuses, :issues, + fixtures :projects, :trackers, :trackers_subtasks, :issue_statuses, :issues, :journals, :journal_details, :enumerations, :users, :issue_categories, :projects_trackers, diff --git a/test/unit/query_test.rb b/test/unit/query_test.rb index 4dfc257..dcb4bb7 100644 --- a/test/unit/query_test.rb +++ b/test/unit/query_test.rb @@ -23,7 +23,7 @@ class QueryTest < ActiveSupport::TestCase include Redmine::I18n fixtures :projects, :enabled_modules, :users, :members, - :member_roles, :roles, :trackers, :issue_statuses, + :member_roles, :roles, :trackers, :trackers_subtasks, :issue_statuses, :issue_categories, :enumerations, :issues, :watchers, :custom_fields, :custom_values, :versions, :queries, diff --git a/test/unit/repository_test.rb b/test/unit/repository_test.rb index 59f011f..c2b434c 100644 --- a/test/unit/repository_test.rb +++ b/test/unit/repository_test.rb @@ -20,6 +20,7 @@ require File.expand_path('../../test_helper', __FILE__) class RepositoryTest < ActiveSupport::TestCase fixtures :projects, :trackers, + :trackers_subtasks, :projects_trackers, :enabled_modules, :repositories, diff --git a/test/unit/role_test.rb b/test/unit/role_test.rb index d24010e..1fc864d 100644 --- a/test/unit/role_test.rb +++ b/test/unit/role_test.rb @@ -18,7 +18,7 @@ require File.expand_path('../../test_helper', __FILE__) class RoleTest < ActiveSupport::TestCase - fixtures :roles, :workflows, :trackers + fixtures :roles, :workflows, :trackers, :trackers_subtasks def test_sorted_scope assert_equal Role.all.sort, Role.sorted.to_a diff --git a/test/unit/search_test.rb b/test/unit/search_test.rb index ab2bab1..398f421 100644 --- a/test/unit/search_test.rb +++ b/test/unit/search_test.rb @@ -29,6 +29,7 @@ class SearchTest < ActiveSupport::TestCase :enabled_modules, :issues, :trackers, + :trackers_subtasks, :issue_statuses, :enumerations, :journals, diff --git a/test/unit/time_entry_activity_test.rb b/test/unit/time_entry_activity_test.rb index c1d7613..535f187 100644 --- a/test/unit/time_entry_activity_test.rb +++ b/test/unit/time_entry_activity_test.rb @@ -21,7 +21,7 @@ class TimeEntryActivityTest < ActiveSupport::TestCase fixtures :enumerations, :time_entries, :custom_fields, :issues, :projects, :users, :members, :roles, :member_roles, - :trackers, :issue_statuses, + :trackers, :trackers_subtasks, :issue_statuses, :projects_trackers, :issue_categories, :groups_users, diff --git a/test/unit/time_entry_query_test.rb b/test/unit/time_entry_query_test.rb index 637f884..8e782f9 100644 --- a/test/unit/time_entry_query_test.rb +++ b/test/unit/time_entry_query_test.rb @@ -20,7 +20,7 @@ require File.expand_path('../../test_helper', __FILE__) class TimeEntryQueryTest < ActiveSupport::TestCase fixtures :issues, :projects, :users, :members, :roles, :member_roles, - :trackers, :issue_statuses, + :trackers, :trackers_subtasks, :issue_statuses, :projects_trackers, :journals, :journal_details, :issue_categories, :enumerations, diff --git a/test/unit/tracker_test.rb b/test/unit/tracker_test.rb index 1db476a..87e0cad 100644 --- a/test/unit/tracker_test.rb +++ b/test/unit/tracker_test.rb @@ -18,7 +18,7 @@ require File.expand_path('../../test_helper', __FILE__) class TrackerTest < ActiveSupport::TestCase - fixtures :trackers, :workflows, :issue_statuses, :roles, :issues, :projects, :projects_trackers + fixtures :trackers, :trackers_subtasks, :workflows, :issue_statuses, :roles, :issues, :projects, :projects_trackers def test_sorted_scope assert_equal Tracker.all.sort, Tracker.sorted.to_a @@ -128,4 +128,24 @@ class TrackerTest < ActiveSupport::TestCase end end end + + def test_allowed_subtask_should_return_true_if_the_tracker_can_be_a_subtask + assert Tracker.find(1).allowed_subtask?(2) + end + + def test_allowed_subtask_should_return_false_if_the_tracker_cannot_be_a_subtask + tracker = Tracker.find(1) + tracker.subtask_ids = [1, 3] + + assert_equal false, tracker.allowed_subtask?(2) + end + + def test_disabling_parent_field_should_remove_all_invalid_subtasks + tracker = Tracker.find(1) + tracker.core_fields -= ['parent_issue_id'] + tracker.save + + assert_equal [2, 3], Tracker.find(2).subtask_ids + assert_equal [2, 3], Tracker.find(3).subtask_ids + end end diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb index f9678c7..1c93bb1 100644 --- a/test/unit/user_test.rb +++ b/test/unit/user_test.rb @@ -19,7 +19,7 @@ require File.expand_path('../../test_helper', __FILE__) class UserTest < ActiveSupport::TestCase fixtures :users, :email_addresses, :members, :projects, :roles, :member_roles, :auth_sources, - :trackers, :issue_statuses, + :trackers, :trackers_subtasks, :issue_statuses, :projects_trackers, :watchers, :issue_categories, :enumerations, :issues, diff --git a/test/unit/version_test.rb b/test/unit/version_test.rb index 4001437..f345d08 100644 --- a/test/unit/version_test.rb +++ b/test/unit/version_test.rb @@ -18,7 +18,7 @@ require File.expand_path('../../test_helper', __FILE__) class VersionTest < ActiveSupport::TestCase - fixtures :projects, :users, :issues, :issue_statuses, :trackers, + fixtures :projects, :users, :issues, :issue_statuses, :trackers, :trackers_subtasks, :enumerations, :versions, :projects_trackers def test_create diff --git a/test/unit/watcher_test.rb b/test/unit/watcher_test.rb index c118481..e0e4983 100644 --- a/test/unit/watcher_test.rb +++ b/test/unit/watcher_test.rb @@ -19,7 +19,7 @@ require File.expand_path('../../test_helper', __FILE__) class WatcherTest < ActiveSupport::TestCase fixtures :projects, :users, :email_addresses, :members, :member_roles, :roles, :enabled_modules, - :issues, :issue_statuses, :enumerations, :trackers, :projects_trackers, + :issues, :issue_statuses, :enumerations, :trackers, :trackers_subtasks, :projects_trackers, :boards, :messages, :wikis, :wiki_pages, :watchers diff --git a/test/unit/workflow_test.rb b/test/unit/workflow_test.rb index 56d5ae6..8376936 100644 --- a/test/unit/workflow_test.rb +++ b/test/unit/workflow_test.rb @@ -18,7 +18,7 @@ require File.expand_path('../../test_helper', __FILE__) class WorkflowTest < ActiveSupport::TestCase - fixtures :roles, :trackers, :issue_statuses + fixtures :roles, :trackers, :trackers_subtasks, :issue_statuses def test_copy WorkflowTransition.delete_all diff --git a/test/unit/workflow_transition_test.rb b/test/unit/workflow_transition_test.rb index 1060ff4..a655597 100644 --- a/test/unit/workflow_transition_test.rb +++ b/test/unit/workflow_transition_test.rb @@ -18,7 +18,7 @@ require File.expand_path('../../test_helper', __FILE__) class WorkflowTransitionTest < ActiveSupport::TestCase - fixtures :roles, :trackers, :issue_statuses + fixtures :roles, :trackers, :trackers_subtasks, :issue_statuses def setup WorkflowTransition.delete_all -- 2.1.4