diff --git a/app/helpers/timelog_helper.rb b/app/helpers/timelog_helper.rb index 838943a8cd..98e0a88f4e 100644 --- a/app/helpers/timelog_helper.rb +++ b/app/helpers/timelog_helper.rb @@ -26,11 +26,7 @@ module TimelogHelper def activity_collection_for_select_options(time_entry=nil, project=nil) project ||= time_entry.try(:project) project ||= @project - if project.nil? - activities = TimeEntryActivity.shared.active - else - activities = project.activities - end + activities = TimeEntryActivity.chooseable_activities(@project) collection = [] if time_entry && time_entry.activity && !time_entry.activity.active? diff --git a/app/models/time_entry.rb b/app/models/time_entry.rb index 7776db0d88..929fce6350 100644 --- a/app/models/time_entry.rb +++ b/app/models/time_entry.rb @@ -109,6 +109,8 @@ class TimeEntry < ActiveRecord::Base if new_record? && self.activity.nil? if default_activity = TimeEntryActivity.default(self.project) self.activity_id = default_activity.id + elsif (activities = TimeEntryActivity.chooseable_activities(self.project)) && activities.count == 1 + self.activity_id = activities.first.id end self.hours = nil if hours == 0 end diff --git a/app/models/time_entry_activity.rb b/app/models/time_entry_activity.rb index 40505019ce..b3847cd3e5 100644 --- a/app/models/time_entry_activity.rb +++ b/app/models/time_entry_activity.rb @@ -32,6 +32,14 @@ class TimeEntryActivity < Enumeration project.activities.detect { |activity| activity.parent_id == default_activity.id } end + def self.chooseable_activities(project=nil) + if project.nil? + TimeEntryActivity.shared.active + else + project.activities + end + end + def option_name OptionName end diff --git a/test/unit/time_entry_test.rb b/test/unit/time_entry_test.rb index 7f9e181735..f600371bda 100644 --- a/test/unit/time_entry_test.rb +++ b/test/unit/time_entry_test.rb @@ -139,6 +139,16 @@ class TimeEntryTest < ActiveSupport::TestCase assert_equal entry.activity_id, project_specific_default_activity.id end + def test_activity_id_should_be_set_automatically_if_there_is_only_one_activity_available + project = Project.find(1) + TimeEntry.all.destroy_all + TimeEntryActivity.destroy_all + only_one_activity = TimeEntryActivity.create!(name: 'Development', parent_id: nil, project_id: nil, is_default: false) + + entry = TimeEntry.new(project: project) + assert_equal entry.activity_id, only_one_activity.id + end + def test_should_accept_future_dates entry = TimeEntry.generate entry.spent_on = User.current.today + 1