OSDN Git Service

Project#activities should check all overridden activities, not just active ones.
authorEric Davis <edavis@littlestreamsoftware.com>
Thu, 24 Dec 2009 18:25:49 +0000 (18:25 +0000)
committerEric Davis <edavis@littlestreamsoftware.com>
Thu, 24 Dec 2009 18:25:49 +0000 (18:25 +0000)
Fixes #4084

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3239 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/project.rb
test/unit/project_test.rb

index 3f34393..4accf5a 100644 (file)
@@ -626,8 +626,8 @@ class Project < ActiveRecord::Base
 
   # Returns all the active Systemwide and project specific activities
   def active_activities
-    overridden_activity_ids = self.time_entry_activities.active.collect(&:parent_id)
-
+    overridden_activity_ids = self.time_entry_activities.collect(&:parent_id)
+    
     if overridden_activity_ids.empty?
       return TimeEntryActivity.shared.active
     else
@@ -657,7 +657,7 @@ class Project < ActiveRecord::Base
     else
       return TimeEntryActivity.shared.active.
         find(:all,
-             :conditions => ["id NOT IN (?)", self.time_entry_activities.active.collect(&:parent_id)]) +
+             :conditions => ["id NOT IN (?)", self.time_entry_activities.collect(&:parent_id)]) +
         self.time_entry_activities.active
     end
   end
index e61ab03..f1dcb34 100644 (file)
@@ -521,6 +521,17 @@ class ProjectTest < ActiveSupport::TestCase
 
     assert project.activities(true).include?(overridden_activity), "Inactive Project specific Activity not found"
   end
+
+  test 'activities should not include active System activities if the project has an override that is inactive' do
+    project = Project.find(1)
+    system_activity = TimeEntryActivity.find_by_name('Design')
+    assert system_activity.active?
+    overridden_activity = TimeEntryActivity.generate!(:project => project, :parent => system_activity, :active => false)
+    assert overridden_activity.save!
+    
+    assert !project.activities.include?(overridden_activity), "Inactive Project specific Activity not found"
+    assert !project.activities.include?(system_activity), "System activity found when the project has an inactive override"
+  end
   
   def test_close_completed_versions
     Version.update_all("status = 'open'")