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)