Commit 2827fff7c76aa180de0323ab2b99339fe4e71cf9
Exists in
staging
and in
42 other branches
Merge branch 'global-user' into 'master'
Global thread-safe current user for models use See merge request !362
Showing
30 changed files
with
122 additions
and
587 deletions
Show diff stats
app/models/user.rb
@@ -15,6 +15,14 @@ class User < ActiveRecord::Base | @@ -15,6 +15,14 @@ class User < ActiveRecord::Base | ||
15 | :email => {:label => _('Email'), :weight => 5}, | 15 | :email => {:label => _('Email'), :weight => 5}, |
16 | } | 16 | } |
17 | 17 | ||
18 | + # see http://stackoverflow.com/a/2513456/670229 | ||
19 | + def self.current | ||
20 | + Thread.current[:current_user] | ||
21 | + end | ||
22 | + def self.current=(user) | ||
23 | + Thread.current[:current_user] = user | ||
24 | + end | ||
25 | + | ||
18 | def self.[](login) | 26 | def self.[](login) |
19 | self.find_by_login(login) | 27 | self.find_by_login(login) |
20 | end | 28 | end |
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 |
lib/authenticated_system.rb
1 | module AuthenticatedSystem | 1 | module AuthenticatedSystem |
2 | + | ||
2 | protected | 3 | protected |
4 | + | ||
5 | + # See impl. from http://stackoverflow.com/a/2513456/670229 | ||
6 | + def self.included? base | ||
7 | + base.around_filter do | ||
8 | + begin | ||
9 | + User.current = current_user | ||
10 | + yield | ||
11 | + ensure | ||
12 | + # to address the thread variable leak issues in Puma/Thin webserver | ||
13 | + User.current = nil | ||
14 | + end | ||
15 | + end | ||
16 | + end | ||
17 | + | ||
3 | # Returns true or false if the user is logged in. | 18 | # Returns true or false if the user is logged in. |
4 | # Preloads @current_user with the user model if they're logged in. | 19 | # Preloads @current_user with the user model if they're logged in. |
5 | def logged_in? | 20 | def logged_in? |
@@ -8,7 +23,9 @@ module AuthenticatedSystem | @@ -8,7 +23,9 @@ module AuthenticatedSystem | ||
8 | 23 | ||
9 | # Accesses the current user from the session. | 24 | # Accesses the current user from the session. |
10 | def current_user | 25 | def current_user |
11 | - @current_user ||= (session[:user] && User.find_by_id(session[:user])) || nil | 26 | + @current_user ||= begin |
27 | + User.current = (session[:user] && User.find_by_id(session[:user])) || nil | ||
28 | + end | ||
12 | end | 29 | end |
13 | 30 | ||
14 | # Store the given user in the session. | 31 | # Store the given user in the session. |
@@ -19,7 +36,7 @@ module AuthenticatedSystem | @@ -19,7 +36,7 @@ module AuthenticatedSystem | ||
19 | session[:user] = new_user.id | 36 | session[:user] = new_user.id |
20 | new_user.register_login | 37 | new_user.register_login |
21 | end | 38 | end |
22 | - @current_user = new_user | 39 | + @current_user = User.current = new_user |
23 | end | 40 | end |
24 | 41 | ||
25 | # Check if the user is authorized. | 42 | # Check if the user is authorized. |
test/action_tracker_test_helper.rb
test/functional/profile_controller_test.rb
@@ -703,13 +703,13 @@ class ProfileControllerTest < ActionController::TestCase | @@ -703,13 +703,13 @@ class ProfileControllerTest < 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 < ActionController::TestCase | @@ -738,10 +738,10 @@ class ProfileControllerTest < 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 < ActionController::TestCase | @@ -761,15 +761,15 @@ class ProfileControllerTest < 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 < ActionController::TestCase | @@ -791,15 +791,15 @@ class ProfileControllerTest < 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 < ActionController::TestCase | @@ -833,10 +833,10 @@ class ProfileControllerTest < 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 < ActionController::TestCase | @@ -868,7 +868,7 @@ class ProfileControllerTest < 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 < ActionController::TestCase | @@ -895,10 +895,10 @@ class ProfileControllerTest < 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 < ActionController::TestCase | @@ -1317,7 +1317,7 @@ class ProfileControllerTest < 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 < ActionController::TestCase | @@ -1332,7 +1332,7 @@ class ProfileControllerTest < 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 < ActionController::TestCase | @@ -1380,7 +1380,7 @@ class ProfileControllerTest < 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 < ActionController::TestCase | @@ -1397,7 +1397,7 @@ class ProfileControllerTest < 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 < ActionController::TestCase | @@ -1408,7 +1408,7 @@ class ProfileControllerTest < 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 < ActiveSupport::TestCase | @@ -89,7 +89,7 @@ class ActionTrackerNotificationTest < 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 < ActiveSupport::TestCase | @@ -985,12 +985,12 @@ class ArticleTest < 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 < ActiveSupport::TestCase | @@ -1085,11 +1085,11 @@ class ArticleTest < 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 < ActiveSupport::TestCase | @@ -1116,7 +1116,7 @@ class ArticleTest < 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 < ActiveSupport::TestCase | @@ -1127,7 +1127,7 @@ class ArticleTest < 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 < ActiveSupport::TestCase | @@ -1147,7 +1147,7 @@ class ArticleTest < 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 < ActiveSupport::TestCase | @@ -1165,11 +1165,11 @@ class ArticleTest < 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 < ActiveSupport::TestCase | @@ -286,7 +286,7 @@ class CommentTest < 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 < ActiveSupport::TestCase | @@ -302,7 +302,7 @@ class CommentTest < 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 < ActiveSupport::TestCase | @@ -301,8 +301,8 @@ class CommunityTest < 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 < ActiveSupport::TestCase | @@ -372,10 +372,10 @@ class CommunityTest < 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 < ActiveSupport::TestCase | @@ -387,7 +387,7 @@ class CommunityTest < 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 < ActiveSupport::TestCase | @@ -475,7 +475,7 @@ class EnterpriseTest < 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 < ActiveSupport::TestCase | @@ -486,7 +486,7 @@ class EnterpriseTest < 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 < ActiveSupport::TestCase | @@ -1249,9 +1249,9 @@ class PersonTest < 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 < ActiveSupport::TestCase | @@ -1259,17 +1259,17 @@ class PersonTest < 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 < ActiveSupport::TestCase | @@ -128,7 +127,7 @@ class TextileArticleTest < 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 < ActiveSupport::TestCase | @@ -325,7 +325,6 @@ class UploadedFileTest < 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
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 < ActiveSupport::TestCase | @@ -33,16 +33,6 @@ class ActionTrackerConfigTest < 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 < ActiveSupport::TestCase | @@ -66,7 +56,7 @@ class ActionTrackerConfigTest < 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 < ActionController::Base | @@ -43,10 +43,6 @@ class ThingsController < 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 < ActiveSupport::TestCase | @@ -108,7 +102,7 @@ class ActionTrackerTest < 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 < ActiveSupport::TestCase | @@ -162,7 +156,7 @@ class ActionTrackerTest < 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 < ActiveSupport::TestCase | @@ -228,16 +222,15 @@ class ActionTrackerTest < 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 < ActiveSupport::TestCase | @@ -252,7 +245,7 @@ class ActionTrackerTest < 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 < ActiveSupport::TestCase | @@ -268,7 +261,7 @@ class ActionTrackerTest < 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 < ActiveSupport::TestCase | @@ -284,7 +277,7 @@ class ActionTrackerTest < 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 < ActiveSupport::TestCase | @@ -330,7 +323,7 @@ class ActionTrackerTest < 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 < ActiveSupport::TestCase | @@ -394,7 +387,7 @@ class ActionTrackerTest < 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 < ActiveSupport::TestCase | @@ -407,7 +400,7 @@ class ActionTrackerTest < 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 < ActiveSupport::TestCase | @@ -452,7 +445,7 @@ class ActionTrackerTest < 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 < ActiveSupport::TestCase | @@ -460,7 +453,7 @@ class ActionTrackerTest < 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 < ActiveSupport::TestCase | @@ -498,13 +491,11 @@ class ActionTrackerTest < 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 < ActiveSupport::TestCase | @@ -514,13 +505,11 @@ class ActionTrackerTest < 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 < ActiveSupport::TestCase | @@ -530,13 +519,11 @@ class ActionTrackerTest < 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 < ActiveSupport::TestCase | @@ -625,10 +612,8 @@ class ActionTrackerTest < 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
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 |