summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/project.rb1
-rw-r--r--test/unit/project_test.rb13
2 files changed, 14 insertions, 0 deletions
diff --git a/app/models/project.rb b/app/models/project.rb
index fdb47cfdd..56e466f81 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -416,6 +416,7 @@ class Project < ActiveRecord::Base
@rolled_up_trackers ||=
Tracker.
joins(:projects).
+ joins("JOIN #{EnabledModule.table_name} ON #{EnabledModule.table_name}.project_id = #{Project.table_name}.id AND #{EnabledModule.table_name}.name = 'issue_tracking'", ).
select("DISTINCT #{Tracker.table_name}.*").
where("#{Project.table_name}.lft >= ? AND #{Project.table_name}.rgt <= ? AND #{Project.table_name}.status <> #{STATUS_ARCHIVED}", lft, rgt).
sorted.
diff --git a/test/unit/project_test.rb b/test/unit/project_test.rb
index e9c6e212a..b9aabebed 100644
--- a/test/unit/project_test.rb
+++ b/test/unit/project_test.rb
@@ -434,6 +434,19 @@ class ProjectTest < ActiveSupport::TestCase
assert_equal [1,2], parent.rolled_up_trackers.collect(&:id)
end
+ test "#rolled_up_trackers should ignore projects with issue_tracking module disabled" do
+ parent = Project.generate!
+ parent.trackers = Tracker.find([1, 2])
+ child = Project.generate_with_parent!(parent)
+ child.trackers = Tracker.find([2, 3])
+
+ assert_equal [1, 2, 3], parent.rolled_up_trackers.collect(&:id).sort
+
+ assert child.disable_module!(:issue_tracking)
+ parent.reload
+ assert_equal [1, 2], parent.rolled_up_trackers.collect(&:id).sort
+ end
+
test "#rolled_up_versions should include the versions for the current project" do
project = Project.generate!
parent_version_1 = Version.generate!(:project => project)