Commit 92682a8821ca37466d309f35d3f9f96885331432
Committed by
Daniela Feitosa
1 parent
081ad754
Exists in
master
and in
29 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 | 12 | |
13 | 13 | validates_presence_of :verb |
14 | 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 | 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 | 67 | end |
68 | 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 | 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 | 96 | end |
74 | 97 | |
75 | 98 | def test_verb_must_be_declared_previously |
... | ... | @@ -333,24 +356,4 @@ class ActionTrackerModelTest < ActiveSupport::TestCase |
333 | 356 | assert_equal(["foo 1", "bar 2"], t.collect_group_with_index(:test){|x, i| "#{x} #{i+1}" }) |
334 | 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 | 359 | end | ... | ... |