diff --git a/app/models/project.rb b/app/models/project.rb index 3f34393b3..4accf5a7c 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -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 diff --git a/test/unit/project_test.rb b/test/unit/project_test.rb index e61ab03fc..f1dcb3418 100644 --- a/test/unit/project_test.rb +++ b/test/unit/project_test.rb @@ -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'")