end
end
- # Returns an array of the trackers used by the project and its sub projects
+ # Returns an array of the trackers used by the project and its active sub projects
def rolled_up_trackers
@rolled_up_trackers ||=
Tracker.find(:all, :include => :projects,
:select => "DISTINCT #{Tracker.table_name}.*",
- :conditions => ["#{Project.table_name}.lft >= ? AND #{Project.table_name}.rgt <= ?", lft, rgt],
+ :conditions => ["#{Project.table_name}.lft >= ? AND #{Project.table_name}.rgt <= ? AND #{Project.table_name}.status = #{STATUS_ACTIVE}", lft, rgt],
:order => "#{Tracker.table_name}.position")
end
assert_equal [2, 3], child.rolled_up_trackers.collect(&:id)\r
end\r
\r
+ def test_rolled_up_trackers_should_ignore_archived_subprojects\r
+ parent = Project.find(1)\r
+ parent.trackers = Tracker.find([1,2])\r
+ child = parent.children.find(3)\r
+ child.trackers = Tracker.find([1,3])\r
+ parent.children.each(&:archive)\r
+ \r
+ assert_equal [1,2], parent.rolled_up_trackers.collect(&:id)\r
+ end\r
+ \r
def test_next_identifier\r
ProjectCustomField.delete_all\r
Project.create!(:name => 'last', :identifier => 'p2008040')\r