Commit b7f7e9fc67014c337d0b50e3424ab8b110751a81

Authored by Braulio Bhavamitra
1 parent 6b3ab931

action_tracker: Don't use user_stamp

user_stamp depends on deprecated Sweeper code and it is quite
complicated to understand and use. Use User.current instead
config/initializers/action_tracker.rb
@@ -32,6 +32,8 @@ ActionTrackerConfig.verbs = { @@ -32,6 +32,8 @@ ActionTrackerConfig.verbs = {
32 }, 32 },
33 } 33 }
34 34
35 -ActionTrackerConfig.current_user_method = :current_person 35 +ActionTrackerConfig.current_user = proc do
  36 + User.current.person rescue nil
  37 +end
36 38
37 ActionTrackerConfig.timeout = 24.hours 39 ActionTrackerConfig.timeout = 24.hours
test/action_tracker_test_helper.rb
1 -class UserStampSweeper < ActionController::Caching::Sweeper  
2 - private  
3 - def current_user  
4 - Person.first  
5 - end 1 +class User
  2 + def self.current
  3 + Thread.current[:current_user] || User.first
  4 + end
6 end 5 end
7 6
8 module ActionTracker 7 module ActionTracker
test/functional/profile_controller_test.rb
@@ -703,13 +703,13 @@ class ProfileControllerTest &lt; ActionController::TestCase @@ -703,13 +703,13 @@ class ProfileControllerTest &lt; ActionController::TestCase
703 p1= create_user.person 703 p1= create_user.person
704 p2= create_user.person 704 p2= create_user.person
705 705
706 - UserStampSweeper.any_instance.stubs(:current_user).returns(p1) 706 + User.current = p1.user
707 scrap1 = create(Scrap, defaults_for_scrap(:sender => p1, :receiver => p2)) 707 scrap1 = create(Scrap, defaults_for_scrap(:sender => p1, :receiver => p2))
708 708
709 - UserStampSweeper.any_instance.stubs(:current_user).returns(p2) 709 + User.current = p2.user
710 scrap2 = create(Scrap, defaults_for_scrap(:sender => p2, :receiver => p1)) 710 scrap2 = create(Scrap, defaults_for_scrap(:sender => p2, :receiver => p1))
711 711
712 - UserStampSweeper.any_instance.stubs(:current_user).returns(p1) 712 + User.current = p1.user
713 create(TinyMceArticle, :profile => p1, :name => 'An article about free software') 713 create(TinyMceArticle, :profile => p1, :name => 'An article about free software')
714 a1 = ActionTracker::Record.last 714 a1 = ActionTracker::Record.last
715 715
@@ -738,10 +738,10 @@ class ProfileControllerTest &lt; ActionController::TestCase @@ -738,10 +738,10 @@ class ProfileControllerTest &lt; ActionController::TestCase
738 scrap1 = create(Scrap, defaults_for_scrap(:sender => p2, :receiver => p3)) 738 scrap1 = create(Scrap, defaults_for_scrap(:sender => p2, :receiver => p3))
739 scrap2 = create(Scrap, defaults_for_scrap(:sender => p2, :receiver => profile)) 739 scrap2 = create(Scrap, defaults_for_scrap(:sender => p2, :receiver => profile))
740 740
741 - UserStampSweeper.any_instance.stubs(:current_user).returns(p3) 741 + User.current = p3.user
742 article1 = TinyMceArticle.create!(:profile => p3, :name => 'An article about free software') 742 article1 = TinyMceArticle.create!(:profile => p3, :name => 'An article about free software')
743 743
744 - UserStampSweeper.any_instance.stubs(:current_user).returns(p2) 744 + User.current = p2.user
745 article2 = TinyMceArticle.create!(:profile => p2, :name => 'Another article about free software') 745 article2 = TinyMceArticle.create!(:profile => p2, :name => 'Another article about free software')
746 746
747 login_as(profile.identifier) 747 login_as(profile.identifier)
@@ -761,15 +761,15 @@ class ProfileControllerTest &lt; ActionController::TestCase @@ -761,15 +761,15 @@ class ProfileControllerTest &lt; ActionController::TestCase
761 761
762 ActionTracker::Record.delete_all 762 ActionTracker::Record.delete_all
763 763
764 - UserStampSweeper.any_instance.stubs(:current_user).returns(p1) 764 + User.current = p1.user
765 create(Scrap,defaults_for_scrap(:sender => p1, :receiver => p1)) 765 create(Scrap,defaults_for_scrap(:sender => p1, :receiver => p1))
766 a1 = ActionTracker::Record.last 766 a1 = ActionTracker::Record.last
767 767
768 - UserStampSweeper.any_instance.stubs(:current_user).returns(p2) 768 + User.current = p2.user
769 create(Scrap, defaults_for_scrap(:sender => p2, :receiver => p3)) 769 create(Scrap, defaults_for_scrap(:sender => p2, :receiver => p3))
770 a2 = ActionTracker::Record.last 770 a2 = ActionTracker::Record.last
771 771
772 - UserStampSweeper.any_instance.stubs(:current_user).returns(p3) 772 + User.current = p3.user
773 create(Scrap, defaults_for_scrap(:sender => p3, :receiver => p1)) 773 create(Scrap, defaults_for_scrap(:sender => p3, :receiver => p1))
774 a3 = ActionTracker::Record.last 774 a3 = ActionTracker::Record.last
775 775
@@ -791,15 +791,15 @@ class ProfileControllerTest &lt; ActionController::TestCase @@ -791,15 +791,15 @@ class ProfileControllerTest &lt; ActionController::TestCase
791 791
792 ActionTracker::Record.delete_all 792 ActionTracker::Record.delete_all
793 793
794 - UserStampSweeper.any_instance.stubs(:current_user).returns(p1) 794 + User.current = p1.user
795 create(Scrap, defaults_for_scrap(:sender => p1, :receiver => p1)) 795 create(Scrap, defaults_for_scrap(:sender => p1, :receiver => p1))
796 a1 = ActionTracker::Record.last 796 a1 = ActionTracker::Record.last
797 797
798 - UserStampSweeper.any_instance.stubs(:current_user).returns(p2) 798 + User.current = p2.user
799 create(Scrap, defaults_for_scrap(:sender => p2, :receiver => p3)) 799 create(Scrap, defaults_for_scrap(:sender => p2, :receiver => p3))
800 a2 = ActionTracker::Record.last 800 a2 = ActionTracker::Record.last
801 801
802 - UserStampSweeper.any_instance.stubs(:current_user).returns(p3) 802 + User.current = p3.user
803 create(Scrap, defaults_for_scrap(:sender => p3, :receiver => p1)) 803 create(Scrap, defaults_for_scrap(:sender => p3, :receiver => p1))
804 a3 = ActionTracker::Record.last 804 a3 = ActionTracker::Record.last
805 805
@@ -833,10 +833,10 @@ class ProfileControllerTest &lt; ActionController::TestCase @@ -833,10 +833,10 @@ class ProfileControllerTest &lt; ActionController::TestCase
833 ActionTracker::Record.destroy_all 833 ActionTracker::Record.destroy_all
834 create(Scrap, defaults_for_scrap(:sender => p1, :receiver => p1)) 834 create(Scrap, defaults_for_scrap(:sender => p1, :receiver => p1))
835 a1 = ActionTracker::Record.last 835 a1 = ActionTracker::Record.last
836 - UserStampSweeper.any_instance.stubs(:current_user).returns(p2) 836 + User.current = p2.user
837 create(Scrap, defaults_for_scrap(:sender => p2, :receiver => p3)) 837 create(Scrap, defaults_for_scrap(:sender => p2, :receiver => p3))
838 a2 = ActionTracker::Record.last 838 a2 = ActionTracker::Record.last
839 - UserStampSweeper.any_instance.stubs(:current_user).returns(p3) 839 + User.current = p3.user
840 create(Scrap, defaults_for_scrap(:sender => p3, :receiver => p1)) 840 create(Scrap, defaults_for_scrap(:sender => p3, :receiver => p1))
841 a3 = ActionTracker::Record.last 841 a3 = ActionTracker::Record.last
842 842
@@ -868,7 +868,7 @@ class ProfileControllerTest &lt; ActionController::TestCase @@ -868,7 +868,7 @@ class ProfileControllerTest &lt; ActionController::TestCase
868 ActionTracker::Record.destroy_all 868 ActionTracker::Record.destroy_all
869 create(Article, :name => 'a', :profile_id => community.id) 869 create(Article, :name => 'a', :profile_id => community.id)
870 create(Article, :name => 'b', :profile_id => community.id) 870 create(Article, :name => 'b', :profile_id => community.id)
871 - UserStampSweeper.any_instance.stubs(:current_user).returns(p2) 871 + User.current = p2.user
872 create(Article, :name => 'c', :profile_id => community.id) 872 create(Article, :name => 'c', :profile_id => community.id)
873 process_delayed_job_queue 873 process_delayed_job_queue
874 874
@@ -895,10 +895,10 @@ class ProfileControllerTest &lt; ActionController::TestCase @@ -895,10 +895,10 @@ class ProfileControllerTest &lt; ActionController::TestCase
895 ActionTracker::Record.destroy_all 895 ActionTracker::Record.destroy_all
896 create(Scrap, defaults_for_scrap(:sender => p1, :receiver => p1)) 896 create(Scrap, defaults_for_scrap(:sender => p1, :receiver => p1))
897 a1 = ActionTracker::Record.last 897 a1 = ActionTracker::Record.last
898 - UserStampSweeper.any_instance.stubs(:current_user).returns(p2) 898 + User.current = p2.user
899 create(Scrap, defaults_for_scrap(:sender => p2, :receiver => p3)) 899 create(Scrap, defaults_for_scrap(:sender => p2, :receiver => p3))
900 a2 = ActionTracker::Record.last 900 a2 = ActionTracker::Record.last
901 - UserStampSweeper.any_instance.stubs(:current_user).returns(p3) 901 + User.current = p3.user
902 create(Scrap, defaults_for_scrap(:sender => p3, :receiver => p1)) 902 create(Scrap, defaults_for_scrap(:sender => p3, :receiver => p1))
903 a3 = ActionTracker::Record.last 903 a3 = ActionTracker::Record.last
904 904
@@ -1317,7 +1317,7 @@ class ProfileControllerTest &lt; ActionController::TestCase @@ -1317,7 +1317,7 @@ class ProfileControllerTest &lt; ActionController::TestCase
1317 another_person = fast_create(Person) 1317 another_person = fast_create(Person)
1318 create(Scrap, defaults_for_scrap(:sender => another_person, :receiver => profile, :content => 'A scrap')) 1318 create(Scrap, defaults_for_scrap(:sender => another_person, :receiver => profile, :content => 'A scrap'))
1319 1319
1320 - UserStampSweeper.any_instance.stubs(:current_user).returns(profile) 1320 + User.current = profile.user
1321 ActionTracker::Record.destroy_all 1321 ActionTracker::Record.destroy_all
1322 TinyMceArticle.create!(:profile => profile, :name => 'An article about free software') 1322 TinyMceArticle.create!(:profile => profile, :name => 'An article about free software')
1323 1323
@@ -1332,7 +1332,7 @@ class ProfileControllerTest &lt; ActionController::TestCase @@ -1332,7 +1332,7 @@ class ProfileControllerTest &lt; ActionController::TestCase
1332 another_person = fast_create(Person) 1332 another_person = fast_create(Person)
1333 scrap = create(Scrap, defaults_for_scrap(:sender => another_person, :receiver => profile, :content => 'A scrap')) 1333 scrap = create(Scrap, defaults_for_scrap(:sender => another_person, :receiver => profile, :content => 'A scrap'))
1334 1334
1335 - UserStampSweeper.any_instance.stubs(:current_user).returns(profile) 1335 + User.current = profile.user
1336 ActionTracker::Record.destroy_all 1336 ActionTracker::Record.destroy_all
1337 TinyMceArticle.create!(:profile => profile, :name => 'An article about free software') 1337 TinyMceArticle.create!(:profile => profile, :name => 'An article about free software')
1338 activity = ActionTracker::Record.last 1338 activity = ActionTracker::Record.last
@@ -1380,7 +1380,7 @@ class ProfileControllerTest &lt; ActionController::TestCase @@ -1380,7 +1380,7 @@ class ProfileControllerTest &lt; ActionController::TestCase
1380 end 1380 end
1381 1381
1382 should 'display comment in wall if user was removed after click in view all comments' do 1382 should 'display comment in wall if user was removed after click in view all comments' do
1383 - UserStampSweeper.any_instance.stubs(:current_user).returns(profile) 1383 + User.current = profile.user
1384 article = TinyMceArticle.create!(:profile => profile, :name => 'An article about free software') 1384 article = TinyMceArticle.create!(:profile => profile, :name => 'An article about free software')
1385 to_be_removed = create_user('removed_user').person 1385 to_be_removed = create_user('removed_user').person
1386 comment = create(Comment, :author => to_be_removed, :title => 'Test Comment', :body => 'My author does not exist =(', :source_id => article.id, :source_type => 'Article') 1386 comment = create(Comment, :author => to_be_removed, :title => 'Test Comment', :body => 'My author does not exist =(', :source_id => article.id, :source_type => 'Article')
@@ -1397,7 +1397,7 @@ class ProfileControllerTest &lt; ActionController::TestCase @@ -1397,7 +1397,7 @@ class ProfileControllerTest &lt; ActionController::TestCase
1397 end 1397 end
1398 1398
1399 should 'not display spam comments in wall' do 1399 should 'not display spam comments in wall' do
1400 - UserStampSweeper.any_instance.stubs(:current_user).returns(profile) 1400 + User.current = profile.user
1401 article = TinyMceArticle.create!(:profile => profile, :name => 'An article about spam\'s nutritional attributes') 1401 article = TinyMceArticle.create!(:profile => profile, :name => 'An article about spam\'s nutritional attributes')
1402 comment = create(Comment, :author => profile, :title => 'Test Comment', :body => 'This article makes me hungry', :source_id => article.id, :source_type => 'Article') 1402 comment = create(Comment, :author => profile, :title => 'Test Comment', :body => 'This article makes me hungry', :source_id => article.id, :source_type => 'Article')
1403 comment.spam! 1403 comment.spam!
@@ -1408,7 +1408,7 @@ class ProfileControllerTest &lt; ActionController::TestCase @@ -1408,7 +1408,7 @@ class ProfileControllerTest &lt; ActionController::TestCase
1408 end 1408 end
1409 1409
1410 should 'display comment in wall from non logged users after click in view all comments' do 1410 should 'display comment in wall from non logged users after click in view all comments' do
1411 - UserStampSweeper.any_instance.stubs(:current_user).returns(profile) 1411 + User.current = profile.user
1412 article = TinyMceArticle.create!(:profile => profile, :name => 'An article about free software') 1412 article = TinyMceArticle.create!(:profile => profile, :name => 'An article about free software')
1413 comment = create(Comment, :name => 'outside user', :email => 'outside@localhost.localdomain', :title => 'Test Comment', :body => 'My author does not exist =(', :source_id => article.id, :source_type => 'Article') 1413 comment = create(Comment, :name => 'outside user', :email => 'outside@localhost.localdomain', :title => 'Test Comment', :body => 'My author does not exist =(', :source_id => article.id, :source_type => 'Article')
1414 1414
test/test_helper.rb
@@ -76,6 +76,12 @@ class ActiveSupport::TestCase @@ -76,6 +76,12 @@ class ActiveSupport::TestCase
76 76
77 end 77 end
78 78
  79 + setup :global_setup
  80 +
  81 + def global_setup
  82 + User.current = nil
  83 + end
  84 +
79 alias :ok :assert_block 85 alias :ok :assert_block
80 86
81 def assert_equivalent(enum1, enum2) 87 def assert_equivalent(enum1, enum2)
test/unit/action_tracker_notification_test.rb
@@ -89,7 +89,7 @@ class ActionTrackerNotificationTest &lt; ActiveSupport::TestCase @@ -89,7 +89,7 @@ class ActionTrackerNotificationTest &lt; ActiveSupport::TestCase
89 end 89 end
90 90
91 should "have comments through article action_tracker" do 91 should "have comments through article action_tracker" do
92 - person = fast_create(Person) 92 + person = create_user.person
93 article = create(TextileArticle, :profile_id => person.id) 93 article = create(TextileArticle, :profile_id => person.id)
94 process_delayed_job_queue 94 process_delayed_job_queue
95 notification = ActionTrackerNotification.last 95 notification = ActionTrackerNotification.last
test/unit/article_test.rb
@@ -985,12 +985,12 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -985,12 +985,12 @@ class ArticleTest &lt; ActiveSupport::TestCase
985 985
986 should 'track action when a published article is created in a community' do 986 should 'track action when a published article is created in a community' do
987 community = fast_create(Community) 987 community = fast_create(Community)
988 - p1 = fast_create(Person)  
989 - p2 = fast_create(Person)  
990 - p3 = fast_create(Person) 988 + p1 = create_user.person
  989 + p2 = create_user.person
  990 + p3 = create_user.person
991 community.add_member(p1) 991 community.add_member(p1)
992 community.add_member(p2) 992 community.add_member(p2)
993 - UserStampSweeper.any_instance.expects(:current_user).returns(p1).at_least_once 993 + User.current = p1.user
994 994
995 article = create(TinyMceArticle, :profile_id => community.id) 995 article = create(TinyMceArticle, :profile_id => community.id)
996 activity = article.activity 996 activity = article.activity
@@ -1085,11 +1085,11 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -1085,11 +1085,11 @@ class ArticleTest &lt; ActiveSupport::TestCase
1085 end 1085 end
1086 1086
1087 should 'create the notification to organization and all organization members' do 1087 should 'create the notification to organization and all organization members' do
1088 - Profile.delete_all  
1089 - ActionTracker::Record.delete_all 1088 + Profile.destroy_all
  1089 + ActionTracker::Record.destroy_all
1090 1090
1091 community = fast_create(Community) 1091 community = fast_create(Community)
1092 - member_1 = fast_create(Person) 1092 + member_1 = create_user.person
1093 community.add_member(member_1) 1093 community.add_member(member_1)
1094 1094
1095 article = create TinyMceArticle, :name => 'Tracked Article 1', :profile_id => community.id 1095 article = create TinyMceArticle, :name => 'Tracked Article 1', :profile_id => community.id
@@ -1116,7 +1116,7 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -1116,7 +1116,7 @@ class ArticleTest &lt; ActiveSupport::TestCase
1116 Article.destroy_all 1116 Article.destroy_all
1117 ActionTracker::Record.destroy_all 1117 ActionTracker::Record.destroy_all
1118 ActionTrackerNotification.destroy_all 1118 ActionTrackerNotification.destroy_all
1119 - UserStampSweeper.any_instance.expects(:current_user).returns(profile).at_least_once 1119 + User.current = profile.user
1120 article = create(TinyMceArticle, :profile_id => profile.id) 1120 article = create(TinyMceArticle, :profile_id => profile.id)
1121 1121
1122 process_delayed_job_queue 1122 process_delayed_job_queue
@@ -1127,7 +1127,7 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -1127,7 +1127,7 @@ class ArticleTest &lt; ActiveSupport::TestCase
1127 f1 = fast_create(Person) 1127 f1 = fast_create(Person)
1128 profile.add_friend(f1) 1128 profile.add_friend(f1)
1129 1129
1130 - UserStampSweeper.any_instance.expects(:current_user).returns(profile).at_least_once 1130 + User.current = profile.user
1131 article = create TinyMceArticle, :name => 'Tracked Article 1', :profile_id => profile.id 1131 article = create TinyMceArticle, :name => 'Tracked Article 1', :profile_id => profile.id
1132 assert_equal 1, ActionTracker::Record.find_all_by_verb('create_article').count 1132 assert_equal 1, ActionTracker::Record.find_all_by_verb('create_article').count
1133 process_delayed_job_queue 1133 process_delayed_job_queue
@@ -1147,7 +1147,7 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -1147,7 +1147,7 @@ class ArticleTest &lt; ActiveSupport::TestCase
1147 Article.destroy_all 1147 Article.destroy_all
1148 ActionTracker::Record.destroy_all 1148 ActionTracker::Record.destroy_all
1149 ActionTrackerNotification.destroy_all 1149 ActionTrackerNotification.destroy_all
1150 - UserStampSweeper.any_instance.expects(:current_user).returns(profile).at_least_once 1150 + User.current = profile.user
1151 article = create(TinyMceArticle, :profile_id => profile.id) 1151 article = create(TinyMceArticle, :profile_id => profile.id)
1152 activity = article.activity 1152 activity = article.activity
1153 1153
@@ -1165,11 +1165,11 @@ class ArticleTest &lt; ActiveSupport::TestCase @@ -1165,11 +1165,11 @@ class ArticleTest &lt; ActiveSupport::TestCase
1165 1165
1166 should 'destroy action_tracker and notifications when an article is destroyed in a community' do 1166 should 'destroy action_tracker and notifications when an article is destroyed in a community' do
1167 community = fast_create(Community) 1167 community = fast_create(Community)
1168 - p1 = fast_create(Person)  
1169 - p2 = fast_create(Person) 1168 + p1 = create_user.person
  1169 + p2 = create_user.person
1170 community.add_member(p1) 1170 community.add_member(p1)
1171 community.add_member(p2) 1171 community.add_member(p2)
1172 - UserStampSweeper.any_instance.expects(:current_user).returns(p1).at_least_once 1172 + User.current = p1.user
1173 1173
1174 article = create(TinyMceArticle, :profile_id => community.id) 1174 article = create(TinyMceArticle, :profile_id => community.id)
1175 activity = article.activity 1175 activity = article.activity
test/unit/comment_test.rb
@@ -286,7 +286,7 @@ class CommentTest &lt; ActiveSupport::TestCase @@ -286,7 +286,7 @@ class CommentTest &lt; ActiveSupport::TestCase
286 end 286 end
287 287
288 should "return activities comments as a thread" do 288 should "return activities comments as a thread" do
289 - person = fast_create(Person) 289 + person = create_user.person
290 a = TextileArticle.create!(:profile => person, :name => 'My article', :body => 'Article body') 290 a = TextileArticle.create!(:profile => person, :name => 'My article', :body => 'Article body')
291 c0 = Comment.create!(:source => a, :body => 'My comment', :author => person) 291 c0 = Comment.create!(:source => a, :body => 'My comment', :author => person)
292 c1 = Comment.create!(:reply_of_id => c0.id, :source => a, :body => 'bla', :author => person) 292 c1 = Comment.create!(:reply_of_id => c0.id, :source => a, :body => 'bla', :author => person)
@@ -302,7 +302,7 @@ class CommentTest &lt; ActiveSupport::TestCase @@ -302,7 +302,7 @@ class CommentTest &lt; ActiveSupport::TestCase
302 end 302 end
303 303
304 should "return activities comments when some comment on thread is spam and not display its replies" do 304 should "return activities comments when some comment on thread is spam and not display its replies" do
305 - person = fast_create(Person) 305 + person = create_user.person
306 a = TextileArticle.create!(:profile => person, :name => 'My article', :body => 'Article body') 306 a = TextileArticle.create!(:profile => person, :name => 'My article', :body => 'Article body')
307 c0 = Comment.create(:source => a, :body => 'Root comment', :author => person) 307 c0 = Comment.create(:source => a, :body => 'Root comment', :author => person)
308 c1 = Comment.create(:reply_of_id => c0.id, :source => a, :body => 'c1', :author => person) 308 c1 = Comment.create(:reply_of_id => c0.id, :source => a, :body => 'c1', :author => person)
test/unit/community_test.rb
@@ -301,8 +301,8 @@ class CommunityTest &lt; ActiveSupport::TestCase @@ -301,8 +301,8 @@ class CommunityTest &lt; ActiveSupport::TestCase
301 ActionTrackerNotification.delete_all 301 ActionTrackerNotification.delete_all
302 p1 = Person.first 302 p1 = Person.first
303 community = fast_create(Community) 303 community = fast_create(Community)
304 - p2 = fast_create(Person)  
305 - p3 = fast_create(Person) 304 + p2 = create_user.person
  305 + p3 = create_user.person
306 community.add_member(p3) 306 community.add_member(p3)
307 article = create(TextileArticle, :profile_id => community.id) 307 article = create(TextileArticle, :profile_id => community.id)
308 time = article.activity.updated_at + 1.day 308 time = article.activity.updated_at + 1.day
@@ -372,10 +372,10 @@ class CommunityTest &lt; ActiveSupport::TestCase @@ -372,10 +372,10 @@ class CommunityTest &lt; ActiveSupport::TestCase
372 end 372 end
373 373
374 should 'return tracked_actions of community as activities' do 374 should 'return tracked_actions of community as activities' do
375 - person = fast_create(Person) 375 + person = create_user.person
376 community = fast_create(Community) 376 community = fast_create(Community)
377 377
378 - UserStampSweeper.any_instance.expects(:current_user).returns(person).at_least_once 378 + User.current = person.user
379 assert_difference 'ActionTracker::Record.count', 1 do 379 assert_difference 'ActionTracker::Record.count', 1 do
380 article = create(TinyMceArticle, :profile => community, :name => 'An article about free software') 380 article = create(TinyMceArticle, :profile => community, :name => 'An article about free software')
381 assert_equal [article.activity], community.activities.map { |a| a.klass.constantize.find(a.id) } 381 assert_equal [article.activity], community.activities.map { |a| a.klass.constantize.find(a.id) }
@@ -387,7 +387,7 @@ class CommunityTest &lt; ActiveSupport::TestCase @@ -387,7 +387,7 @@ class CommunityTest &lt; ActiveSupport::TestCase
387 community = fast_create(Community) 387 community = fast_create(Community)
388 community2 = fast_create(Community) 388 community2 = fast_create(Community)
389 389
390 - UserStampSweeper.any_instance.expects(:current_user).returns(person).at_least_once 390 + User.current = person.user
391 article = create(TinyMceArticle, :profile => community2, :name => 'Another article about free software') 391 article = create(TinyMceArticle, :profile => community2, :name => 'Another article about free software')
392 392
393 assert_not_includes community.activities.map { |a| a.klass.constantize.find(a.id) }, article.activity 393 assert_not_includes community.activities.map { |a| a.klass.constantize.find(a.id) }, article.activity
test/unit/enterprise_test.rb
@@ -475,7 +475,7 @@ class EnterpriseTest &lt; ActiveSupport::TestCase @@ -475,7 +475,7 @@ class EnterpriseTest &lt; ActiveSupport::TestCase
475 person = fast_create(Person) 475 person = fast_create(Person)
476 enterprise = fast_create(Enterprise) 476 enterprise = fast_create(Enterprise)
477 477
478 - UserStampSweeper.any_instance.expects(:current_user).returns(person).at_least_once 478 + User.current = person.user
479 article = create(TinyMceArticle, :profile => enterprise, :name => 'An article about free software') 479 article = create(TinyMceArticle, :profile => enterprise, :name => 'An article about free software')
480 480
481 assert_equal [article.activity], enterprise.activities.map { |a| a.klass.constantize.find(a.id) } 481 assert_equal [article.activity], enterprise.activities.map { |a| a.klass.constantize.find(a.id) }
@@ -486,7 +486,7 @@ class EnterpriseTest &lt; ActiveSupport::TestCase @@ -486,7 +486,7 @@ class EnterpriseTest &lt; ActiveSupport::TestCase
486 enterprise = fast_create(Enterprise) 486 enterprise = fast_create(Enterprise)
487 enterprise2 = fast_create(Enterprise) 487 enterprise2 = fast_create(Enterprise)
488 488
489 - UserStampSweeper.any_instance.expects(:current_user).returns(person).at_least_once 489 + User.current = person.user
490 article = create(TinyMceArticle, :profile => enterprise2, :name => 'Another article about free software') 490 article = create(TinyMceArticle, :profile => enterprise2, :name => 'Another article about free software')
491 491
492 assert_not_includes enterprise.activities.map { |a| a.klass.constantize.find(a.id) }, article.activity 492 assert_not_includes enterprise.activities.map { |a| a.klass.constantize.find(a.id) }, article.activity
test/unit/person_test.rb
@@ -1249,9 +1249,9 @@ class PersonTest &lt; ActiveSupport::TestCase @@ -1249,9 +1249,9 @@ class PersonTest &lt; ActiveSupport::TestCase
1249 person = create_user.person 1249 person = create_user.person
1250 another_person = create_user.person 1250 another_person = create_user.person
1251 1251
1252 - UserStampSweeper.any_instance.stubs(:current_user).returns(another_person) 1252 + User.current = another_person.user
1253 scrap = create(Scrap, defaults_for_scrap(:sender => another_person, :receiver => person, :content => 'A scrap')) 1253 scrap = create(Scrap, defaults_for_scrap(:sender => another_person, :receiver => person, :content => 'A scrap'))
1254 - UserStampSweeper.any_instance.expects(:current_user).returns(person).at_least_once 1254 + User.current = person.user
1255 article = create(TinyMceArticle, :profile => person, :name => 'An article about free software') 1255 article = create(TinyMceArticle, :profile => person, :name => 'An article about free software')
1256 1256
1257 assert_equivalent [scrap,article.activity], person.activities.map { |a| a.klass.constantize.find(a.id) } 1257 assert_equivalent [scrap,article.activity], person.activities.map { |a| a.klass.constantize.find(a.id) }
@@ -1259,17 +1259,17 @@ class PersonTest &lt; ActiveSupport::TestCase @@ -1259,17 +1259,17 @@ class PersonTest &lt; ActiveSupport::TestCase
1259 1259
1260 should 'not return tracked_actions and scraps from others as activities' do 1260 should 'not return tracked_actions and scraps from others as activities' do
1261 ActionTracker::Record.destroy_all 1261 ActionTracker::Record.destroy_all
1262 - person = fast_create(Person)  
1263 - another_person = fast_create(Person) 1262 + person = create_user.person
  1263 + another_person = create_user.person
1264 1264
1265 person_scrap = create(Scrap, defaults_for_scrap(:sender => person, :receiver => person, :content => 'A scrap from person')) 1265 person_scrap = create(Scrap, defaults_for_scrap(:sender => person, :receiver => person, :content => 'A scrap from person'))
1266 another_person_scrap = create(Scrap, defaults_for_scrap(:sender => another_person, :receiver => another_person, :content => 'A scrap from another person')) 1266 another_person_scrap = create(Scrap, defaults_for_scrap(:sender => another_person, :receiver => another_person, :content => 'A scrap from another person'))
1267 1267
1268 - UserStampSweeper.any_instance.stubs(:current_user).returns(another_person) 1268 + User.current = another_person.user
1269 create(TinyMceArticle, :profile => another_person, :name => 'An article about free software from another person') 1269 create(TinyMceArticle, :profile => another_person, :name => 'An article about free software from another person')
1270 another_person_activity = ActionTracker::Record.last 1270 another_person_activity = ActionTracker::Record.last
1271 1271
1272 - UserStampSweeper.any_instance.stubs(:current_user).returns(person) 1272 + User.current = person.user
1273 create(TinyMceArticle, :profile => person, :name => 'An article about free software') 1273 create(TinyMceArticle, :profile => person, :name => 'An article about free software')
1274 person_activity = ActionTracker::Record.last 1274 person_activity = ActionTracker::Record.last
1275 1275
test/unit/textile_article_test.rb
1 require_relative "../test_helper" 1 require_relative "../test_helper"
2 2
3 class TextileArticleTest < ActiveSupport::TestCase 3 class TextileArticleTest < ActiveSupport::TestCase
4 - 4 +
5 def setup 5 def setup
6 @profile = create_user('testing').person 6 @profile = create_user('testing').person
7 - ActionTracker::Record.stubs(:current_user_from_model).returns(fast_create(Person))  
8 end 7 end
9 attr_reader :profile 8 attr_reader :profile
10 9
@@ -128,7 +127,7 @@ class TextileArticleTest &lt; ActiveSupport::TestCase @@ -128,7 +127,7 @@ class TextileArticleTest &lt; ActiveSupport::TestCase
128 assert_equal true, a.notifiable? 127 assert_equal true, a.notifiable?
129 assert_equal true, a.advertise? 128 assert_equal true, a.advertise?
130 assert_equal true, a.is_trackable? 129 assert_equal true, a.is_trackable?
131 - 130 +
132 a.published=false 131 a.published=false
133 assert_equal false, a.published? 132 assert_equal false, a.published?
134 assert_equal false, a.is_trackable? 133 assert_equal false, a.is_trackable?
test/unit/uploaded_file_test.rb
@@ -325,7 +325,6 @@ class UploadedFileTest &lt; ActiveSupport::TestCase @@ -325,7 +325,6 @@ class UploadedFileTest &lt; ActiveSupport::TestCase
325 325
326 should 'group trackers activity of image\'s upload' do 326 should 'group trackers activity of image\'s upload' do
327 ActionTracker::Record.delete_all 327 ActionTracker::Record.delete_all
328 - ActionTracker::Record.stubs(:current_user_from_model).returns(profile)  
329 gallery = fast_create(Gallery, :profile_id => profile.id) 328 gallery = fast_create(Gallery, :profile_id => profile.id)
330 329
331 image1 = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :parent => gallery, :profile => profile) 330 image1 = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :parent => gallery, :profile => profile)
vendor/plugins/action_tracker/init.rb
1 -require "user_stamp"  
2 -  
3 -UserStamp.creator_attribute = :user  
4 -UserStamp.updater_attribute = :user  
5 -  
6 -class ActionController::Base  
7 - extend UserStamp::ClassMethods  
8 -end  
9 -  
10 require "action_tracker" 1 require "action_tracker"
vendor/plugins/action_tracker/lib/action_tracker.rb
@@ -5,7 +5,6 @@ module ActionTracker @@ -5,7 +5,6 @@ module ActionTracker
5 module ControllerMethods 5 module ControllerMethods
6 6
7 def self.included(base) 7 def self.included(base)
8 - base.send :user_stamp, ActionTracker::Record  
9 base.send :extend, ClassMethods 8 base.send :extend, ClassMethods
10 end 9 end
11 10
@@ -42,7 +41,7 @@ module ActionTracker @@ -42,7 +41,7 @@ module ActionTracker
42 elsif keep_params.to_s == 'all' 41 elsif keep_params.to_s == 'all'
43 stored_params = params 42 stored_params = params
44 end 43 end
45 - user = send ActionTrackerConfig.current_user_method 44 + user = send ActionTrackerConfig.current_user
46 tracked_action = case ActionTrackerConfig.verb_type(verb) 45 tracked_action = case ActionTrackerConfig.verb_type(verb)
47 when :groupable 46 when :groupable
48 Record.add_or_create :verb => verb, :user => user, :params => stored_params 47 Record.add_or_create :verb => verb, :user => user, :params => stored_params
@@ -90,7 +89,7 @@ module ActionTracker @@ -90,7 +89,7 @@ module ActionTracker
90 89
91 def save_action_for_verb(verb, keep_params = :all, post_proc = Proc.new{}, custom_user = nil, custom_target = nil) 90 def save_action_for_verb(verb, keep_params = :all, post_proc = Proc.new{}, custom_user = nil, custom_target = nil)
92 user = self.send(custom_user) unless custom_user.blank? 91 user = self.send(custom_user) unless custom_user.blank?
93 - user ||= ActionTracker::Record.current_user_from_model 92 + user ||= ActionTracker::Record.current_user
94 target = self.send(custom_target) unless custom_target.blank? 93 target = self.send(custom_target) unless custom_target.blank?
95 return nil if user.nil? 94 return nil if user.nil?
96 if keep_params.is_a? Array 95 if keep_params.is_a? Array
@@ -115,7 +114,7 @@ module ActionTracker @@ -115,7 +114,7 @@ module ActionTracker
115 end 114 end
116 tracked_action.target = target || self 115 tracked_action.target = target || self
117 user.tracked_actions << tracked_action 116 user.tracked_actions << tracked_action
118 - post_proc.call tracked_action.reload 117 + post_proc.call tracked_action
119 end 118 end
120 119
121 end 120 end
vendor/plugins/action_tracker/lib/action_tracker_config.rb
@@ -20,12 +20,12 @@ class ActionTrackerConfig @@ -20,12 +20,12 @@ class ActionTrackerConfig
20 verbs.keys.map(&:to_s) 20 verbs.keys.map(&:to_s)
21 end 21 end
22 22
23 - def self.current_user_method  
24 - config[:current_user_method] || :current_user 23 + def self.current_user
  24 + config[:current_user] || proc{ nil }
25 end 25 end
26 26
27 - def self.current_user_method=(method_name)  
28 - UserStamp.current_user_method = config[:current_user_method] = method_name 27 + def self.current_user= block
  28 + config[:current_user] = block
29 end 29 end
30 30
31 def self.default_filter_time 31 def self.default_filter_time
vendor/plugins/action_tracker/lib/action_tracker_model.rb
@@ -27,14 +27,12 @@ module ActionTracker @@ -27,14 +27,12 @@ module ActionTracker
27 scope :recent, :conditions => ['created_at >= ?', RECENT_DELAY.days.ago] 27 scope :recent, :conditions => ['created_at >= ?', RECENT_DELAY.days.ago]
28 scope :visible, :conditions => { :visible => true } 28 scope :visible, :conditions => { :visible => true }
29 29
30 - def self.current_user_from_model  
31 - u = new  
32 - u.valid?  
33 - u.user 30 + def self.current_user
  31 + ActionTrackerConfig.current_user.call
34 end 32 end
35 33
36 def self.update_or_create(params) 34 def self.update_or_create(params)
37 - u = params[:user] || current_user_from_model 35 + u = params[:user] || current_user
38 return if u.nil? 36 return if u.nil?
39 target_hash = params[:target].nil? ? {} : {:target_type => params[:target].class.base_class.to_s, :target_id => params[:target].id} 37 target_hash = params[:target].nil? ? {} : {:target_type => params[:target].class.base_class.to_s, :target_id => params[:target].id}
40 conditions = { :user_id => u.id, :user_type => u.class.base_class.to_s, :verb => params[:verb].to_s }.merge(target_hash) 38 conditions = { :user_id => u.id, :user_type => u.class.base_class.to_s, :verb => params[:verb].to_s }.merge(target_hash)
@@ -44,7 +42,7 @@ module ActionTracker @@ -44,7 +42,7 @@ module ActionTracker
44 end 42 end
45 43
46 def self.add_or_create(params) 44 def self.add_or_create(params)
47 - u = params[:user] || current_user_from_model 45 + u = params[:user] || current_user
48 return if u.nil? 46 return if u.nil?
49 target_hash = params[:target].nil? ? {} : {:target_type => params[:target].class.base_class.to_s, :target_id => params[:target].id} 47 target_hash = params[:target].nil? ? {} : {:target_type => params[:target].class.base_class.to_s, :target_id => params[:target].id}
50 l = last :conditions => { :user_id => u.id, :user_type => u.class.base_class.to_s, :verb => params[:verb].to_s }.merge(target_hash) 48 l = last :conditions => { :user_id => u.id, :user_type => u.class.base_class.to_s, :verb => params[:verb].to_s }.merge(target_hash)
vendor/plugins/action_tracker/test/action_tracker_config_test.rb
@@ -33,16 +33,6 @@ class ActionTrackerConfigTest &lt; ActiveSupport::TestCase @@ -33,16 +33,6 @@ class ActionTrackerConfigTest &lt; ActiveSupport::TestCase
33 %w(search delete login).each { |verb| assert ActionTrackerConfig.verb_names.include?(verb) } 33 %w(search delete login).each { |verb| assert ActionTrackerConfig.verb_names.include?(verb) }
34 end 34 end
35 35
36 - def test_current_user_is_default_method  
37 - ActionTrackerConfig.config[:current_user_method] = nil  
38 - assert_equal :current_user, ActionTrackerConfig.current_user_method  
39 - end  
40 -  
41 - def test_current_user_can_be_set  
42 - ActionTrackerConfig.current_user_method = :logged_in_user  
43 - assert_equal :logged_in_user, ActionTrackerConfig.current_user_method  
44 - end  
45 -  
46 def test_default_filter_time_is_after 36 def test_default_filter_time_is_after
47 ActionTrackerConfig.config[:default_filter_time] = nil 37 ActionTrackerConfig.config[:default_filter_time] = nil
48 assert_equal :after, ActionTrackerConfig.default_filter_time 38 assert_equal :after, ActionTrackerConfig.default_filter_time
@@ -66,7 +56,7 @@ class ActionTrackerConfigTest &lt; ActiveSupport::TestCase @@ -66,7 +56,7 @@ class ActionTrackerConfigTest &lt; ActiveSupport::TestCase
66 def test_get_verb_return_hash 56 def test_get_verb_return_hash
67 assert_kind_of Hash, ActionTrackerConfig.get_verb(:search) 57 assert_kind_of Hash, ActionTrackerConfig.get_verb(:search)
68 end 58 end
69 - 59 +
70 def test_get_verb_symbol_search_by_symbol 60 def test_get_verb_symbol_search_by_symbol
71 ActionTrackerConfig.verbs = { :search => { :description => "Got it" } } 61 ActionTrackerConfig.verbs = { :search => { :description => "Got it" } }
72 assert_equal "Got it", ActionTrackerConfig.get_verb(:search)[:description] 62 assert_equal "Got it", ActionTrackerConfig.get_verb(:search)[:description]
vendor/plugins/action_tracker/test/action_tracker_test.rb
@@ -43,10 +43,6 @@ class ThingsController &lt; ActionController::Base @@ -43,10 +43,6 @@ class ThingsController &lt; ActionController::Base
43 render :text => "test" 43 render :text => "test"
44 end 44 end
45 45
46 - def current_user  
47 - SomeModel.first || SomeModel.create!  
48 - end  
49 -  
50 def rescue_action(e) 46 def rescue_action(e)
51 raise e 47 raise e
52 end 48 end
@@ -58,9 +54,7 @@ ActionController::Routing::Routes.draw { |map| map.resources :things, :collectio @@ -58,9 +54,7 @@ ActionController::Routing::Routes.draw { |map| map.resources :things, :collectio
58 class ActionTrackerTest < ActiveSupport::TestCase 54 class ActionTrackerTest < ActiveSupport::TestCase
59 55
60 def setup 56 def setup
61 - UserStamp.creator_attribute = :user  
62 - UserStamp.updater_attribute = :user  
63 - ActionTrackerConfig.current_user_method = :current_user 57 + ActionTrackerConfig.current_user = proc{ SomeModel.first || SomeModel.create! }
64 ActionTracker::Record.delete_all 58 ActionTracker::Record.delete_all
65 ActionTrackerConfig.verbs = { :some_verb => { :description => "Did something" } } 59 ActionTrackerConfig.verbs = { :some_verb => { :description => "Did something" } }
66 @request = ActionController::TestRequest.new 60 @request = ActionController::TestRequest.new
@@ -108,7 +102,7 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase @@ -108,7 +102,7 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase
108 end 102 end
109 103
110 def test_track_actions_executes_block 104 def test_track_actions_executes_block
111 - @controller = create_controller do 105 + @controller = create_controller do
112 track_actions :some_verb do 106 track_actions :some_verb do
113 throw :some_symbol 107 throw :some_symbol
114 end 108 end
@@ -162,7 +156,7 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase @@ -162,7 +156,7 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase
162 assert_difference 'ActionTracker::Record.count' do 156 assert_difference 'ActionTracker::Record.count' do
163 get :index, :foo => 5 157 get :index, :foo => 5
164 end 158 end
165 - assert_equal({"action"=>"index", "foo"=>"5", "controller"=>"things"}, ActionTracker::Record.first.params) 159 + assert_equal({"action"=>"index", "foo"=>"5", "controller"=>"things"}, ActionTracker::Record.first.params)
166 end 160 end
167 161
168 def test_keep_params_not_set_should_store_all_params 162 def test_keep_params_not_set_should_store_all_params
@@ -228,16 +222,15 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase @@ -228,16 +222,15 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase
228 def test_store_user 222 def test_store_user
229 @controller = create_controller do 223 @controller = create_controller do
230 track_actions_before :some_verb 224 track_actions_before :some_verb
231 - def current_user  
232 - SomeModel.create! :some_column => "test"  
233 - end  
234 end 225 end
  226 + ActionTrackerConfig.current_user = proc{ SomeModel.create! :some_column => "test" }
  227 +
235 assert_difference 'ActionTracker::Record.count' do 228 assert_difference 'ActionTracker::Record.count' do
236 get :test 229 get :test
237 end 230 end
238 assert_equal "test", ActionTracker::Record.last.user.some_column 231 assert_equal "test", ActionTracker::Record.last.user.some_column
239 end 232 end
240 - 233 +
241 def test_should_update_when_verb_is_updatable_and_no_timeout 234 def test_should_update_when_verb_is_updatable_and_no_timeout
242 ActionTrackerConfig.verbs = { :some_verb => { :description => "Did something", :type => :updatable } } 235 ActionTrackerConfig.verbs = { :some_verb => { :description => "Did something", :type => :updatable } }
243 ActionTrackerConfig.timeout = 5.minutes 236 ActionTrackerConfig.timeout = 5.minutes
@@ -252,7 +245,7 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase @@ -252,7 +245,7 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase
252 assert_no_difference 'ActionTracker::Record.count' do 245 assert_no_difference 'ActionTracker::Record.count' do
253 get :test 246 get :test
254 end 247 end
255 - end 248 + end
256 249
257 def test_should_create_when_verb_is_updatable_and_timeout 250 def test_should_create_when_verb_is_updatable_and_timeout
258 ActionTrackerConfig.verbs = { :some_verb => { :description => "Did something", :type => :updatable } } 251 ActionTrackerConfig.verbs = { :some_verb => { :description => "Did something", :type => :updatable } }
@@ -268,7 +261,7 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase @@ -268,7 +261,7 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase
268 assert_difference 'ActionTracker::Record.count' do 261 assert_difference 'ActionTracker::Record.count' do
269 get :test 262 get :test
270 end 263 end
271 - end 264 + end
272 265
273 def test_should_update_when_verb_is_groupable_and_no_timeout 266 def test_should_update_when_verb_is_groupable_and_no_timeout
274 ActionTrackerConfig.verbs = { :some_verb => { :description => "Did something", :type => :groupable } } 267 ActionTrackerConfig.verbs = { :some_verb => { :description => "Did something", :type => :groupable } }
@@ -284,7 +277,7 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase @@ -284,7 +277,7 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase
284 assert_no_difference 'ActionTracker::Record.count' do 277 assert_no_difference 'ActionTracker::Record.count' do
285 get :test, :foo => "test" 278 get :test, :foo => "test"
286 end 279 end
287 - end 280 + end
288 281
289 def test_should_create_when_verb_is_groupable_and_timeout 282 def test_should_create_when_verb_is_groupable_and_timeout
290 ActionTrackerConfig.verbs = { :some_verb => { :description => "Did something", :type => :groupable } } 283 ActionTrackerConfig.verbs = { :some_verb => { :description => "Did something", :type => :groupable } }
@@ -330,7 +323,7 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase @@ -330,7 +323,7 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase
330 def test_should_get_time_spent_doing_something 323 def test_should_get_time_spent_doing_something
331 ActionTrackerConfig.verbs = { :some_verb => { :type => :updatable }, :other_verb => { :type => :updatable } } 324 ActionTrackerConfig.verbs = { :some_verb => { :type => :updatable }, :other_verb => { :type => :updatable } }
332 m = SomeModel.create! 325 m = SomeModel.create!
333 - @controller = create_controller do 326 + @controller = create_controller do
334 track_actions :some_verb 327 track_actions :some_verb
335 end 328 end
336 @controller.stubs(:current_user).returns(m) 329 @controller.stubs(:current_user).returns(m)
@@ -394,7 +387,7 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase @@ -394,7 +387,7 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase
394 assert_equal "foo", ActionTracker::Record.last.params["other_column"] 387 assert_equal "foo", ActionTracker::Record.last.params["other_column"]
395 assert_nil ActionTracker::Record.last.params["another_column"] 388 assert_nil ActionTracker::Record.last.params["another_column"]
396 end 389 end
397 - 390 +
398 def test_replace_dots_by_underline_in_param_name 391 def test_replace_dots_by_underline_in_param_name
399 ActionTrackerConfig.verbs = { :test => { :description => "Some" } } 392 ActionTrackerConfig.verbs = { :test => { :description => "Some" } }
400 model = create_model do 393 model = create_model do
@@ -407,7 +400,7 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase @@ -407,7 +400,7 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase
407 assert_equal 3, ActionTracker::Record.last.params["other_column_size"] 400 assert_equal 3, ActionTracker::Record.last.params["other_column_size"]
408 assert_equal 5, ActionTracker::Record.last.params["another_column"] 401 assert_equal 5, ActionTracker::Record.last.params["another_column"]
409 end 402 end
410 - 403 +
411 def test_track_actions_store_all_params 404 def test_track_actions_store_all_params
412 ActionTrackerConfig.verbs = { :test => { :description => "Some" } } 405 ActionTrackerConfig.verbs = { :test => { :description => "Some" } }
413 model = create_model do 406 model = create_model do
@@ -452,7 +445,7 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase @@ -452,7 +445,7 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase
452 model = create_model { track_actions :test, :after_create, :keep_params => :all, :if => Proc.new { 2 > 1 } } 445 model = create_model { track_actions :test, :after_create, :keep_params => :all, :if => Proc.new { 2 > 1 } }
453 @controller = create_controller_for_model(model) 446 @controller = create_controller_for_model(model)
454 assert_difference('ActionTracker::Record.count') { get :test } 447 assert_difference('ActionTracker::Record.count') { get :test }
455 - 448 +
456 model = create_model { track_actions :test, :after_create, :keep_params => :all, :if => Proc.new { 2 < 1 } } 449 model = create_model { track_actions :test, :after_create, :keep_params => :all, :if => Proc.new { 2 < 1 } }
457 @controller = create_controller_for_model(model) 450 @controller = create_controller_for_model(model)
458 assert_no_difference('ActionTracker::Record.count') { get :test } 451 assert_no_difference('ActionTracker::Record.count') { get :test }
@@ -460,7 +453,7 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase @@ -460,7 +453,7 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase
460 model = create_model { track_actions :test, :after_create, :keep_params => :all, :unless => Proc.new { 2 > 1 } } 453 model = create_model { track_actions :test, :after_create, :keep_params => :all, :unless => Proc.new { 2 > 1 } }
461 @controller = create_controller_for_model(model) 454 @controller = create_controller_for_model(model)
462 assert_no_difference('ActionTracker::Record.count') { get :test } 455 assert_no_difference('ActionTracker::Record.count') { get :test }
463 - 456 +
464 model = create_model { track_actions :test, :after_create, :keep_params => :all, :unless => Proc.new { 2 < 1 } } 457 model = create_model { track_actions :test, :after_create, :keep_params => :all, :unless => Proc.new { 2 < 1 } }
465 @controller = create_controller_for_model(model) 458 @controller = create_controller_for_model(model)
466 assert_difference('ActionTracker::Record.count') { get :test } 459 assert_difference('ActionTracker::Record.count') { get :test }
@@ -498,13 +491,11 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase @@ -498,13 +491,11 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase
498 ActionTrackerConfig.verbs = { :test => { :description => "Some" } } 491 ActionTrackerConfig.verbs = { :test => { :description => "Some" } }
499 model = create_model do 492 model = create_model do
500 track_actions :test, :after_create, :custom_user => :test_custom_user 493 track_actions :test, :after_create, :custom_user => :test_custom_user
501 - def current_user  
502 - SomeModel.create!  
503 - end  
504 def test_custom_user 494 def test_custom_user
505 OtherModel.create! 495 OtherModel.create!
506 end 496 end
507 end 497 end
  498 + ActionTrackerConfig.current_user = proc{ SomeModel.create! }
508 @controller = create_controller_for_model(model, :another_column => 2) 499 @controller = create_controller_for_model(model, :another_column => 2)
509 assert_difference('ActionTracker::Record.count') { get :test } 500 assert_difference('ActionTracker::Record.count') { get :test }
510 assert_kind_of OtherModel, ActionTracker::Record.last.user 501 assert_kind_of OtherModel, ActionTracker::Record.last.user
@@ -514,13 +505,11 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase @@ -514,13 +505,11 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase
514 ActionTrackerConfig.verbs = { :test => { :description => "Some" } } 505 ActionTrackerConfig.verbs = { :test => { :description => "Some" } }
515 model = create_model do 506 model = create_model do
516 track_actions :test, :after_create, "custom_user" => :test_custom_user 507 track_actions :test, :after_create, "custom_user" => :test_custom_user
517 - def current_user  
518 - SomeModel.create!  
519 - end  
520 def test_custom_user 508 def test_custom_user
521 OtherModel.create! 509 OtherModel.create!
522 end 510 end
523 end 511 end
  512 + ActionTrackerConfig.current_user = proc{ SomeModel.create! }
524 @controller = create_controller_for_model(model, :another_column => 2) 513 @controller = create_controller_for_model(model, :another_column => 2)
525 assert_difference('ActionTracker::Record.count') { get :test } 514 assert_difference('ActionTracker::Record.count') { get :test }
526 assert_kind_of OtherModel, ActionTracker::Record.last.user 515 assert_kind_of OtherModel, ActionTracker::Record.last.user
@@ -530,13 +519,11 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase @@ -530,13 +519,11 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase
530 ActionTrackerConfig.verbs = { :test => { :description => "Some" } } 519 ActionTrackerConfig.verbs = { :test => { :description => "Some" } }
531 model = create_model do 520 model = create_model do
532 track_actions :test, :after_create 521 track_actions :test, :after_create
533 - def current_user  
534 - SomeModel.create!  
535 - end  
536 def test_custom_user 522 def test_custom_user
537 OtherModel.create! 523 OtherModel.create!
538 end 524 end
539 end 525 end
  526 + ActionTrackerConfig.current_user = proc{ SomeModel.create! }
540 @controller = create_controller_for_model(model, :another_column => 2) 527 @controller = create_controller_for_model(model, :another_column => 2)
541 assert_difference('ActionTracker::Record.count') { get :test } 528 assert_difference('ActionTracker::Record.count') { get :test }
542 assert_kind_of SomeModel, ActionTracker::Record.last.user 529 assert_kind_of SomeModel, ActionTracker::Record.last.user
@@ -625,10 +612,8 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase @@ -625,10 +612,8 @@ class ActionTrackerTest &lt; ActiveSupport::TestCase
625 render :text => "test" 612 render :text => "test"
626 end 613 end
627 614
628 - def current_user  
629 - SomeModel.create! :some_column => "test"  
630 - end  
631 end 615 end
  616 + ActionTrackerConfig.current_user = proc{ SomeModel.create! :some_column => "test" }
632 end 617 end
633 618
634 end 619 end
vendor/plugins/user_stamp/MIT-LICENSE
@@ -1,20 +0,0 @@ @@ -1,20 +0,0 @@
1 -Copyright (c) 2008 [John Nunemaker]  
2 -  
3 -Permission is hereby granted, free of charge, to any person obtaining  
4 -a copy of this software and associated documentation files (the  
5 -"Software"), to deal in the Software without restriction, including  
6 -without limitation the rights to use, copy, modify, merge, publish,  
7 -distribute, sublicense, and/or sell copies of the Software, and to  
8 -permit persons to whom the Software is furnished to do so, subject to  
9 -the following conditions:  
10 -  
11 -The above copyright notice and this permission notice shall be  
12 -included in all copies or substantial portions of the Software.  
13 -  
14 -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,  
15 -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF  
16 -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND  
17 -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE  
18 -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION  
19 -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION  
20 -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  
vendor/plugins/user_stamp/README
@@ -1,37 +0,0 @@ @@ -1,37 +0,0 @@
1 -= UserStamp  
2 -  
3 -Rails plugin that makes stamping records with a user when they are  
4 -created and updated dirt simple. It assumes that your controller has  
5 -a current_user method. It also assumes that any record being stamped  
6 -has two attributes--creator_id and updater_id. You can override both  
7 -of these assumptions easily.  
8 -  
9 -== Setup  
10 -  
11 -1. script/plugin install git://github.com/jnunemaker/user_stamp.git  
12 -2. Add user_stamp to application.rb, like the following:  
13 -  
14 - class ApplicationController < ActionController::Base  
15 - user_stamp Post, Asset, Job  
16 - end  
17 -  
18 -  
19 -== Defaults  
20 -  
21 - UserStamp.creator_attribute = :creator_id  
22 - UserStamp.updater_attribute = :updater_id  
23 - UserStamp.current_user_method = :current_user  
24 -  
25 -If your user stamped columns and current_user method are different,  
26 -just create an initializer such as config/initializers/user_stamp.rb  
27 -and copy and paste the defaults above, changing them to fit your app.  
28 -  
29 -== Problems?  
30 -  
31 -Use the issue tracker on Github.  
32 -  
33 -== Docs  
34 -  
35 -http://rdoc.info/projects/jnunemaker/user_stamp  
36 -  
37 -Copyright (c) 2008 [John Nunemaker], released under the MIT license  
vendor/plugins/user_stamp/Rakefile
@@ -1,11 +0,0 @@ @@ -1,11 +0,0 @@
1 -require 'rake'  
2 -require 'spec/rake/spectask'  
3 -  
4 -desc 'Default: run specs.'  
5 -task :default => :spec  
6 -  
7 -desc 'Run the specs'  
8 -Spec::Rake::SpecTask.new(:spec) do |t|  
9 - t.spec_opts = ['--colour --format progress --loadby mtime --reverse']  
10 - t.spec_files = FileList['spec/**/*_spec.rb']  
11 -end  
12 \ No newline at end of file 0 \ No newline at end of file
vendor/plugins/user_stamp/init.rb
@@ -1,5 +0,0 @@ @@ -1,5 +0,0 @@
1 -require 'user_stamp'  
2 -  
3 -class ActionController::Base  
4 - extend UserStamp::ClassMethods  
5 -end  
vendor/plugins/user_stamp/install.rb
@@ -1,15 +0,0 @@ @@ -1,15 +0,0 @@
1 -instructions = <<EOF  
2 -  
3 -#{'*' * 62}  
4 -Don't forget to add user stamp to your application controller.  
5 -  
6 - class ApplicationController < ActionController::Base  
7 - user_stamp Post, Asset, Job  
8 - end  
9 -  
10 -View the README for more information.  
11 -#{'*' * 62}  
12 -  
13 -EOF  
14 -  
15 -puts instructions  
16 \ No newline at end of file 0 \ No newline at end of file
vendor/plugins/user_stamp/lib/user_stamp.rb
@@ -1,50 +0,0 @@ @@ -1,50 +0,0 @@
1 -module UserStamp  
2 - mattr_accessor :creator_attribute  
3 - mattr_accessor :updater_attribute  
4 - mattr_accessor :current_user_method  
5 -  
6 - def self.creator_assignment_method  
7 - "#{UserStamp.creator_attribute}="  
8 - end  
9 -  
10 - def self.updater_assignment_method  
11 - "#{UserStamp.updater_attribute}="  
12 - end  
13 -  
14 - module ClassMethods  
15 - def user_stamp(*models)  
16 - models.each { |klass| UserStampSweeper.observe(klass) }  
17 -  
18 - class_eval do  
19 - cache_sweeper :user_stamp_sweeper  
20 - end  
21 - end  
22 - end  
23 -end  
24 -  
25 -UserStamp.creator_attribute = :creator_id  
26 -UserStamp.updater_attribute = :updater_id  
27 -UserStamp.current_user_method = :current_user  
28 -  
29 -class UserStampSweeper < ActionController::Caching::Sweeper  
30 - def before_validation(record)  
31 - return unless current_user  
32 -  
33 - attribute, method = UserStamp.creator_attribute, UserStamp.creator_assignment_method  
34 - if record.respond_to?(method) && record.new_record?  
35 - record.send(method, current_user) unless record.send("#{attribute}_id_changed?") || record.send("#{attribute}_type_changed?")  
36 - end  
37 -  
38 - attribute, method = UserStamp.updater_attribute, UserStamp.updater_assignment_method  
39 - if record.respond_to?(method)  
40 - record.send(method, current_user) if record.send(attribute).blank?  
41 - end  
42 - end  
43 -  
44 - private  
45 - def current_user  
46 - if controller.respond_to?(UserStamp.current_user_method)  
47 - controller.send UserStamp.current_user_method  
48 - end  
49 - end  
50 -end  
vendor/plugins/user_stamp/spec/spec_helper.rb
@@ -1,24 +0,0 @@ @@ -1,24 +0,0 @@
1 -require 'rubygems'  
2 -  
3 -gem 'rspec'  
4 -require 'spec'  
5 -  
6 -%w[activesupport activerecord actionpack].each do |lib|  
7 - gem lib  
8 - require lib  
9 -end  
10 -  
11 -require 'action_controller'  
12 -  
13 -$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')  
14 -require 'user_stamp'  
15 -  
16 -UserStampSweeper.instance  
17 -  
18 -class User  
19 - attr_accessor :id  
20 -  
21 - def initialize(id);  
22 - @id = id  
23 - end  
24 -end  
vendor/plugins/user_stamp/spec/user_stamp_class_methods_spec.rb
@@ -1,51 +0,0 @@ @@ -1,51 +0,0 @@
1 -require File.dirname(__FILE__) + '/spec_helper'  
2 -  
3 -class FauxModelBase  
4 - def self.add_observer(observer_instance); end  
5 -end  
6 -  
7 -class Post < FauxModelBase; end  
8 -class Category < FauxModelBase; end  
9 -class Label < FauxModelBase; end  
10 -  
11 -class FauxApplicationController  
12 - def self.cache_sweeper(sweepers); end  
13 -  
14 - def self.current_user  
15 - User.new(220)  
16 - end  
17 -end  
18 -  
19 -class PostsController < FauxApplicationController  
20 - extend UserStamp::ClassMethods  
21 -end  
22 -  
23 -describe UserStamp::ClassMethods do  
24 - before do  
25 - UserStamp.creator_attribute = :creator_id  
26 - UserStamp.updater_attribute = :updater_id  
27 - UserStamp.current_user_method = :current_user  
28 - end  
29 -  
30 - it "should add user_stamp method" do  
31 - PostsController.respond_to?(:user_stamp).should == true  
32 - end  
33 -  
34 - def user_stamp  
35 - PostsController.user_stamp Post, Category, Label  
36 - end  
37 -  
38 - describe "#user_stamp" do  
39 - it "should add UserStampSweeper as observer for each model" do  
40 - [Post, Category, Label].each do |klass|  
41 - klass.should_receive(:add_observer).with(UserStampSweeper.instance).once  
42 - end  
43 - user_stamp  
44 - end  
45 -  
46 - it "should setup cache sweeper for controller" do  
47 - PostsController.should_receive(:cache_sweeper).with(:user_stamp_sweeper).once  
48 - user_stamp  
49 - end  
50 - end  
51 -end  
52 \ No newline at end of file 0 \ No newline at end of file
vendor/plugins/user_stamp/spec/user_stamp_spec.rb
@@ -1,51 +0,0 @@ @@ -1,51 +0,0 @@
1 -require File.dirname(__FILE__) + '/spec_helper'  
2 -  
3 -describe UserStamp do  
4 - before do  
5 - UserStamp.creator_attribute = :creator_id  
6 - UserStamp.updater_attribute = :updater_id  
7 - UserStamp.current_user_method = :current_user  
8 - end  
9 -  
10 - it "should default creator_attribute to creator_id" do  
11 - UserStamp.creator_attribute.should == :creator_id  
12 - end  
13 -  
14 - it "should default updater_attribute to updater_id" do  
15 - UserStamp.updater_attribute.should == :updater_id  
16 - end  
17 -  
18 - it "should default current_user_method to current_user" do  
19 - UserStamp.current_user_method.should == :current_user  
20 - end  
21 -  
22 - it "should have accessor for creator_attribute" do  
23 - UserStamp.creator_attribute = 'mofo_id'  
24 - UserStamp.creator_attribute.should == 'mofo_id'  
25 - end  
26 -  
27 - it "should have accessor for updater_attribute" do  
28 - UserStamp.updater_attribute = 'mofo_id'  
29 - UserStamp.updater_attribute.should == 'mofo_id'  
30 - end  
31 -  
32 - it "should have accessor for current_user_method" do  
33 - UserStamp.current_user_method = 'my_current_user'  
34 - UserStamp.current_user_method.should == 'my_current_user'  
35 - end  
36 -  
37 - describe "assignment methods" do  
38 - before do  
39 - UserStamp.creator_attribute = 'creator_mofo_id'  
40 - UserStamp.updater_attribute = 'updater_mofo_id'  
41 - end  
42 -  
43 - it "should include creator assignment method" do  
44 - UserStamp.creator_assignment_method.should == 'creator_mofo_id='  
45 - end  
46 -  
47 - it "should include updater assignment method" do  
48 - UserStamp.updater_assignment_method.should == 'updater_mofo_id='  
49 - end  
50 - end  
51 -end  
52 \ No newline at end of file 0 \ No newline at end of file
vendor/plugins/user_stamp/spec/user_stamp_sweeper_spec.rb
@@ -1,194 +0,0 @@ @@ -1,194 +0,0 @@
1 -require File.dirname(__FILE__) + '/spec_helper'  
2 -  
3 -class PostsController  
4 - def self.current_user  
5 - @@user  
6 - end  
7 -end  
8 -  
9 -describe UserStampSweeper, "#before_validation" do  
10 - before do  
11 - @@user = User.new(220)  
12 - UserStamp.creator_attribute = :creator  
13 - UserStamp.updater_attribute = :updater  
14 - UserStamp.current_user_method = :current_user  
15 - @sweeper = UserStampSweeper.instance  
16 - @sweeper.stub!(:controller).and_return(PostsController)  
17 - end  
18 -  
19 - describe "(with new record)" do  
20 - it "should set creator if attribute exists" do  
21 - record = mock('Record', :creator= => nil, :updater= => nil, :new_record? => true, :updater => nil, :creator_id_changed? => false, :creator_type_changed? => false, :updater_id_changed? => false, :updater_type_changed? => false)  
22 - record.should_receive(:creator=).with(@@user).once  
23 - @sweeper.before_validation(record)  
24 - end  
25 -  
26 - it "should NOT set creator if attribute does not exist" do  
27 - record = mock('Record', :new_record? => true, :updater= => nil, :respond_to? => false)  
28 - record.should_receive(:respond_to?).with("creator=").and_return(false)  
29 - record.should_not_receive(:creator=)  
30 - @sweeper.before_validation(record)  
31 - end  
32 - end  
33 -  
34 - describe "(with non new record)" do  
35 - it "should NOT set creator if attribute exists" do  
36 - record = mock('Record', :creator= => nil, :updater= => nil, :updater => nil, :new_record? => false, :creator_id_changed? => false, :creator_type_changed? => false, :updater_id_changed? => false, :updater_type_changed? => false)  
37 - record.should_not_receive(:creator=)  
38 - @sweeper.before_validation(record)  
39 - end  
40 -  
41 - it "should NOT set creator if attribute does not exist" do  
42 - record = mock('Record', :updater= => nil, :updater => nil, :new_record? => false, :creator_id_changed? => false, :creator_type_changed? => false, :updater_id_changed? => false, :updater_type_changed? => false)  
43 - record.should_not_receive(:creator=)  
44 - @sweeper.before_validation(record)  
45 - end  
46 - end  
47 -  
48 - it "should set updater if attribute exists" do  
49 - record = mock('Record', :creator= => nil, :updater= => nil, :new_record? => false, :updater => nil)  
50 - record.should_receive(:updater=)  
51 - @sweeper.before_validation(record)  
52 - end  
53 -  
54 - it "should NOT set updater if attribute does not exist" do  
55 - record = mock('Record', :creator= => nil, :updater= => nil, :new_record? => :false, :respond_to? => false)  
56 - record.should_receive(:respond_to?).with("updater=").and_return(false)  
57 - record.should_not_receive(:updater=)  
58 - @sweeper.before_validation(record)  
59 - end  
60 -end  
61 -  
62 -describe UserStampSweeper, "#before_validation (with custom attribute names)" do  
63 - before do  
64 - UserStamp.creator_attribute = :created_by  
65 - UserStamp.updater_attribute = :updated_by  
66 - UserStamp.current_user_method = :current_user  
67 - @sweeper = UserStampSweeper.instance  
68 - @sweeper.stub!(:controller).and_return(PostsController)  
69 - end  
70 -  
71 - describe "(with new record)" do  
72 - it "should set created_by if attribute exists" do  
73 - record = mock('Record', :created_by= => nil, :updated_by => nil, :updated_by= => nil, :new_record? => true, :created_by_id_changed? => false, :created_by_type_changed? => false, :updated_by_id_changed? => false, :updated_by_type_changed? => false)  
74 - record.should_receive(:created_by=).with(@@user).once  
75 - @sweeper.before_validation(record)  
76 - end  
77 -  
78 - it "should NOT set created_by if attribute does not exist" do  
79 - record = mock('Record', :new_record? => true, :updated_by= => nil, :respond_to? => false)  
80 - record.should_receive(:respond_to?).with("created_by=").and_return(false)  
81 - record.should_not_receive(:created_by=)  
82 - @sweeper.before_validation(record)  
83 - end  
84 - end  
85 -  
86 - describe "(with non new record)" do  
87 - it "should NOT set created_by if attribute exists" do  
88 - record = mock('Record', :created_by= => nil, :updated_by => nil, :updated_by= => nil, :new_record? => false, :updated_by_id_changed? => false, :updated_by_type_changed? => false)  
89 - record.should_not_receive(:created_by=)  
90 - @sweeper.before_validation(record)  
91 - end  
92 -  
93 - it "should NOT set created_by if attribute does not exist" do  
94 - record = mock('Record', :updated_by= => nil, :updated_by => nil, :new_record? => false, :updated_by_id_changed? => false, :updated_by_type_changed? => false)  
95 - record.should_not_receive(:created_by=)  
96 - @sweeper.before_validation(record)  
97 - end  
98 - end  
99 -  
100 - it "should set updated_by if attribute exists" do  
101 - record = mock('Record', :created_by= => nil, :updated_by= => nil, :updated_by => nil, :new_record? => :false, :created_by_id_changed? => false, :created_by_type_changed? => false, :updated_by_id_changed? => false, :updated_by_type_changed? => false)  
102 - record.should_receive(:updated_by=)  
103 - @sweeper.before_validation(record)  
104 - end  
105 -  
106 - it "should NOT set updated_by if attribute does not exist" do  
107 - record = mock('Record', :created_by= => nil, :updated_by= => nil, :new_record? => :false, :respond_to? => false)  
108 - record.should_receive(:respond_to?).with("updated_by=").and_return(false)  
109 - record.should_not_receive(:updated_by=)  
110 - @sweeper.before_validation(record)  
111 - end  
112 -  
113 - it "should NOT set created_by if attribute changed" do  
114 - record = mock('Record', :created_by= => nil, :updated_by= => nil, :new_record? => true, :created_by_id_changed? => true, :created_by_type_changed? => true)  
115 - record.should_receive(:respond_to?).with("updated_by=").and_return(false)  
116 - record.should_receive(:respond_to?).with("created_by=").and_return(true)  
117 - record.should_not_receive(:created_by=)  
118 - @sweeper.before_validation(record)  
119 - end  
120 -  
121 - it "should NOT set updated_by if attribute is not nil" do  
122 - record = mock('Record', :created_by= => nil, :updated_by= => nil, :updated_by => 1, :new_record? => false)  
123 - record.should_receive(:respond_to?).with("updated_by=").and_return(true)  
124 - record.should_receive(:respond_to?).with("created_by=").and_return(false)  
125 - record.should_not_receive(:updated_by=)  
126 - @sweeper.before_validation(record)  
127 - end  
128 -  
129 - it "should set created_by if attribute has not changed" do  
130 - record = mock('Record', :created_by= => nil, :updated_by= => nil, :new_record? => true, :created_by_id_changed? => false, :created_by_type_changed? => false)  
131 - record.should_receive(:respond_to?).with("updated_by=").and_return(false)  
132 - record.should_receive(:respond_to?).with("created_by=").and_return(true)  
133 - record.should_receive(:created_by=)  
134 - @sweeper.before_validation(record)  
135 - end  
136 -  
137 - it "should set updated_by if attribute is nil" do  
138 - record = mock('Record', :created_by= => nil, :updated_by= => nil, :updated_by => nil, :new_record? => false)  
139 - record.should_receive(:respond_to?).with("updated_by=").and_return(true)  
140 - record.should_receive(:respond_to?).with("created_by=").and_return(false)  
141 - record.should_receive(:updated_by=)  
142 - @sweeper.before_validation(record)  
143 - end  
144 -end  
145 -  
146 -describe UserStampSweeper, "#current_user" do  
147 - before do  
148 - UserStamp.creator_attribute = :creator  
149 - UserStamp.updater_attribute = :updater  
150 - UserStamp.current_user_method = :current_user  
151 - @sweeper = UserStampSweeper.instance  
152 - end  
153 -  
154 - it "should send current_user if controller responds to it" do  
155 - user = mock('User')  
156 - controller = mock('Controller', :current_user => user)  
157 - @sweeper.stub!(:controller).and_return(controller)  
158 - controller.should_receive(:current_user)  
159 - @sweeper.send(:current_user)  
160 - end  
161 -  
162 - it "should not send current_user if controller does not respond to it" do  
163 - user = mock('User')  
164 - controller = mock('Controller', :respond_to? => false)  
165 - @sweeper.stub!(:controller).and_return(controller)  
166 - controller.should_not_receive(:current_user)  
167 - @sweeper.send(:current_user)  
168 - end  
169 -end  
170 -  
171 -describe UserStampSweeper, "#current_user (with custom current_user_method)" do  
172 - before do  
173 - UserStamp.creator_attribute = :creator  
174 - UserStamp.updater_attribute = :updater  
175 - UserStamp.current_user_method = :my_user  
176 - @sweeper = UserStampSweeper.instance  
177 - end  
178 -  
179 - it "should send current_user if controller responds to it" do  
180 - user = mock('User')  
181 - controller = mock('Controller', :my_user => user)  
182 - @sweeper.stub!(:controller).and_return(controller)  
183 - controller.should_receive(:my_user)  
184 - @sweeper.send(:current_user)  
185 - end  
186 -  
187 - it "should not send current_user if controller does not respond to it" do  
188 - user = mock('User')  
189 - controller = mock('Controller', :respond_to? => false)  
190 - @sweeper.stub!(:controller).and_return(controller)  
191 - controller.should_not_receive(:my_user)  
192 - @sweeper.send(:current_user)  
193 - end  
194 -end