summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/time_entry.rb1
-rw-r--r--test/unit/time_entry_test.rb8
2 files changed, 9 insertions, 0 deletions
diff --git a/app/models/time_entry.rb b/app/models/time_entry.rb
index c5a917d96..062e9c80b 100644
--- a/app/models/time_entry.rb
+++ b/app/models/time_entry.rb
@@ -116,6 +116,7 @@ class TimeEntry < ActiveRecord::Base
errors.add :hours, :invalid if hours && (hours < 0 || hours >= 1000)
errors.add :project_id, :invalid if project.nil?
errors.add :issue_id, :invalid if (issue_id && !issue) || (issue && project!=issue.project) || @invalid_issue_id
+ errors.add :activity_id, :inclusion if activity_id_changed? && project && !project.activities.include?(activity)
end
def hours=(h)
diff --git a/test/unit/time_entry_test.rb b/test/unit/time_entry_test.rb
index 9154c6008..c9386cc37 100644
--- a/test/unit/time_entry_test.rb
+++ b/test/unit/time_entry_test.rb
@@ -142,6 +142,14 @@ class TimeEntryTest < ActiveSupport::TestCase
assert_equal 1, te.errors.count
end
+ def test_acitivity_should_belong_to_project_activities
+ activity = TimeEntryActivity.create!(:name => 'Other project activity', :project_id => 2, :active => true)
+
+ entry = TimeEntry.new(:spent_on => Date.today, :hours => 1.0, :user => User.find(1), :project_id => 1, :activity => activity)
+ assert !entry.valid?
+ assert_include I18n.translate('activerecord.errors.messages.inclusion'), entry.errors[:activity_id]
+ end
+
def test_spent_on_with_2_digits_year_should_not_be_valid
entry = TimeEntry.new(:project => Project.find(1), :user => User.find(1), :activity => TimeEntryActivity.first, :hours => 1)
entry.spent_on = "09-02-04"