diff --git a/vendor/plugins/action_tracker/lib/action_tracker_model.rb b/vendor/plugins/action_tracker/lib/action_tracker_model.rb index 4ce5097..89a5c28 100644 --- a/vendor/plugins/action_tracker/lib/action_tracker_model.rb +++ b/vendor/plugins/action_tracker/lib/action_tracker_model.rb @@ -12,6 +12,11 @@ module ActionTracker validates_presence_of :verb validates_presence_of :user + validate :user_existence + + def user_existence + errors.add(:user, "user doesn't exists") if user && !user.class.exists?(user) + end alias_method :subject, :user diff --git a/vendor/plugins/action_tracker/test/action_tracker_model_test.rb b/vendor/plugins/action_tracker/test/action_tracker_model_test.rb index bf88d06..01af3d2 100644 --- a/vendor/plugins/action_tracker/test/action_tracker_model_test.rb +++ b/vendor/plugins/action_tracker/test/action_tracker_model_test.rb @@ -67,9 +67,32 @@ class ActionTrackerModelTest < ActiveSupport::TestCase end end + def test_user_is_mandatory + ta = ActionTracker::Record.new :user_type => 'SomeModel', :verb => :some_verb + ta.valid? + assert ta.errors.on(:user) + assert_raise ActiveRecord::RecordInvalid do + ta.save! + end + + ta = ActionTracker::Record.new :user_id => 2, :verb => :some_verb + ta.valid? + assert ta.errors.on(:user) + assert_raise ActiveRecord::RecordInvalid do + ta.save! + end + end + def test_user_exists_indeed - ta = ActionTracker::Record.new(:user_id => -1, :user_type => "SomeModel", :verb => :some_verb) - assert !ta.valid? + ta = ActionTracker::Record.new(:verb => :some_verb) + ta.valid? + assert ta.errors.on(:user) + user = SomeModel.create! + ta.user = user + assert ta.valid? + user.destroy + ta.valid? + assert ta.errors.on(:user) end def test_verb_must_be_declared_previously @@ -333,24 +356,4 @@ class ActionTrackerModelTest < ActiveSupport::TestCase assert_equal(["foo 1", "bar 2"], t.collect_group_with_index(:test){|x, i| "#{x} #{i+1}" }) end - def test_user_id_is_mandatory - ActionTrackerConfig.verbs = { :some => { :description => "Some" } } - ta = ActionTracker::Record.new :user_type => 'SomeModel', :verb => :some - ta.valid? - assert ta.errors.on(:user_id) - assert_raise ActiveRecord::RecordInvalid do - ta.save! - end - end - - def test_user_type_is_mandatory - ActionTrackerConfig.verbs = { :some => { :description => "Some" } } - ta = ActionTracker::Record.new :user_id => 2, :verb => :some - ta.valid? - assert ta.errors.on(:user_type) - assert_raise ActiveRecord::RecordInvalid do - ta.save! - end - end - end -- libgit2 0.21.2