Commit 92682a8821ca37466d309f35d3f9f96885331432
Committed by
Daniela Feitosa
1 parent
081ad754
Exists in
master
and in
28 other branches
Validates existence of user on ActionTracker::Record
(ActionItem1874)
Showing
2 changed files
with
30 additions
and
22 deletions
Show diff stats
vendor/plugins/action_tracker/lib/action_tracker_model.rb
| @@ -12,6 +12,11 @@ module ActionTracker | @@ -12,6 +12,11 @@ module ActionTracker | ||
| 12 | 12 | ||
| 13 | validates_presence_of :verb | 13 | validates_presence_of :verb |
| 14 | validates_presence_of :user | 14 | validates_presence_of :user |
| 15 | + validate :user_existence | ||
| 16 | + | ||
| 17 | + def user_existence | ||
| 18 | + errors.add(:user, "user doesn't exists") if user && !user.class.exists?(user) | ||
| 19 | + end | ||
| 15 | 20 | ||
| 16 | alias_method :subject, :user | 21 | alias_method :subject, :user |
| 17 | 22 |
vendor/plugins/action_tracker/test/action_tracker_model_test.rb
| @@ -67,9 +67,32 @@ class ActionTrackerModelTest < ActiveSupport::TestCase | @@ -67,9 +67,32 @@ class ActionTrackerModelTest < ActiveSupport::TestCase | ||
| 67 | end | 67 | end |
| 68 | end | 68 | end |
| 69 | 69 | ||
| 70 | + def test_user_is_mandatory | ||
| 71 | + ta = ActionTracker::Record.new :user_type => 'SomeModel', :verb => :some_verb | ||
| 72 | + ta.valid? | ||
| 73 | + assert ta.errors.on(:user) | ||
| 74 | + assert_raise ActiveRecord::RecordInvalid do | ||
| 75 | + ta.save! | ||
| 76 | + end | ||
| 77 | + | ||
| 78 | + ta = ActionTracker::Record.new :user_id => 2, :verb => :some_verb | ||
| 79 | + ta.valid? | ||
| 80 | + assert ta.errors.on(:user) | ||
| 81 | + assert_raise ActiveRecord::RecordInvalid do | ||
| 82 | + ta.save! | ||
| 83 | + end | ||
| 84 | + end | ||
| 85 | + | ||
| 70 | def test_user_exists_indeed | 86 | def test_user_exists_indeed |
| 71 | - ta = ActionTracker::Record.new(:user_id => -1, :user_type => "SomeModel", :verb => :some_verb) | ||
| 72 | - assert !ta.valid? | 87 | + ta = ActionTracker::Record.new(:verb => :some_verb) |
| 88 | + ta.valid? | ||
| 89 | + assert ta.errors.on(:user) | ||
| 90 | + user = SomeModel.create! | ||
| 91 | + ta.user = user | ||
| 92 | + assert ta.valid? | ||
| 93 | + user.destroy | ||
| 94 | + ta.valid? | ||
| 95 | + assert ta.errors.on(:user) | ||
| 73 | end | 96 | end |
| 74 | 97 | ||
| 75 | def test_verb_must_be_declared_previously | 98 | def test_verb_must_be_declared_previously |
| @@ -333,24 +356,4 @@ class ActionTrackerModelTest < ActiveSupport::TestCase | @@ -333,24 +356,4 @@ class ActionTrackerModelTest < ActiveSupport::TestCase | ||
| 333 | assert_equal(["foo 1", "bar 2"], t.collect_group_with_index(:test){|x, i| "#{x} #{i+1}" }) | 356 | assert_equal(["foo 1", "bar 2"], t.collect_group_with_index(:test){|x, i| "#{x} #{i+1}" }) |
| 334 | end | 357 | end |
| 335 | 358 | ||
| 336 | - def test_user_id_is_mandatory | ||
| 337 | - ActionTrackerConfig.verbs = { :some => { :description => "Some" } } | ||
| 338 | - ta = ActionTracker::Record.new :user_type => 'SomeModel', :verb => :some | ||
| 339 | - ta.valid? | ||
| 340 | - assert ta.errors.on(:user_id) | ||
| 341 | - assert_raise ActiveRecord::RecordInvalid do | ||
| 342 | - ta.save! | ||
| 343 | - end | ||
| 344 | - end | ||
| 345 | - | ||
| 346 | - def test_user_type_is_mandatory | ||
| 347 | - ActionTrackerConfig.verbs = { :some => { :description => "Some" } } | ||
| 348 | - ta = ActionTracker::Record.new :user_id => 2, :verb => :some | ||
| 349 | - ta.valid? | ||
| 350 | - assert ta.errors.on(:user_type) | ||
| 351 | - assert_raise ActiveRecord::RecordInvalid do | ||
| 352 | - ta.save! | ||
| 353 | - end | ||
| 354 | - end | ||
| 355 | - | ||
| 356 | end | 359 | end |