Commit 128b006ceda39383d1fa92b6c333eadb0363d27e
Committed by
Antonio Terceiro
1 parent
556bf994
Exists in
staging
and in
42 other branches
Article's actions are not tracked by default. By now, textile and tinymce's actions are tracked
Showing
6 changed files
with
105 additions
and
11 deletions
Show diff stats
app/models/article.rb
@@ -2,10 +2,10 @@ require 'hpricot' | @@ -2,10 +2,10 @@ require 'hpricot' | ||
2 | 2 | ||
3 | class Article < ActiveRecord::Base | 3 | class Article < ActiveRecord::Base |
4 | 4 | ||
5 | - track_actions :create_article, :after_create, :keep_params => [:name, :url], :if => Proc.new { |a| a.published? && !a.profile.is_a?(Community) && !a.image? } | ||
6 | - track_actions :update_article, :before_update, :keep_params => [:name, :url], :if => Proc.new { |a| a.published? && (a.body_changed? || a.name_changed?) } | ||
7 | - track_actions :remove_article, :before_destroy, :keep_params => [:name], :if => :published? | ||
8 | - track_actions :publish_article_in_community, :after_create, :keep_params => ["name", "url", "profile.url", "profile.name"], :if => Proc.new { |a| a.published? && a.profile.is_a?(Community) && !a.image? } | 5 | + track_actions :create_article, :after_create, :keep_params => [:name, :url], :if => Proc.new { |a| a.published? && !a.profile.is_a?(Community) && !a.image? && a.notifiable? } |
6 | + track_actions :update_article, :before_update, :keep_params => [:name, :url], :if => Proc.new { |a| a.published? && (a.body_changed? || a.name_changed?) && a.notifiable? } | ||
7 | + track_actions :remove_article, :before_destroy, :keep_params => [:name], :if => Proc.new { |a| a.published? && a.notifiable? } | ||
8 | + track_actions :publish_article_in_community, :after_create, :keep_params => ["name", "url", "profile.url", "profile.name"], :if => Proc.new { |a| a.published? && a.profile.is_a?(Community) && !a.image? && a.notifiable? } | ||
9 | 9 | ||
10 | # xss_terminate plugin can't sanitize array fields | 10 | # xss_terminate plugin can't sanitize array fields |
11 | before_save :sanitize_tag_list | 11 | before_save :sanitize_tag_list |
@@ -360,6 +360,10 @@ class Article < ActiveRecord::Base | @@ -360,6 +360,10 @@ class Article < ActiveRecord::Base | ||
360 | creator_id && Profile.find(creator_id) | 360 | creator_id && Profile.find(creator_id) |
361 | end | 361 | end |
362 | 362 | ||
363 | + def notifiable? | ||
364 | + false | ||
365 | + end | ||
366 | + | ||
363 | private | 367 | private |
364 | 368 | ||
365 | def sanitize_tag_list | 369 | def sanitize_tag_list |
app/models/textile_article.rb
app/models/tiny_mce_article.rb
@@ -15,4 +15,8 @@ class TinyMceArticle < TextArticle | @@ -15,4 +15,8 @@ class TinyMceArticle < TextArticle | ||
15 | include WhiteListFilter | 15 | include WhiteListFilter |
16 | filter_iframes :abstract, :body, :whitelist => lambda { profile && profile.environment && profile.environment.trusted_sites_for_iframe } | 16 | filter_iframes :abstract, :body, :whitelist => lambda { profile && profile.environment && profile.environment.trusted_sites_for_iframe } |
17 | 17 | ||
18 | + def notifiable? | ||
19 | + true | ||
20 | + end | ||
21 | + | ||
18 | end | 22 | end |
test/unit/article_test.rb
@@ -919,7 +919,7 @@ class ArticleTest < Test::Unit::TestCase | @@ -919,7 +919,7 @@ class ArticleTest < Test::Unit::TestCase | ||
919 | end | 919 | end |
920 | 920 | ||
921 | should 'track action when a published article is created outside a community' do | 921 | should 'track action when a published article is created outside a community' do |
922 | - article = Article.create! :name => 'Tracked Article', :profile_id => profile.id | 922 | + article = TinyMceArticle.create! :name => 'Tracked Article', :profile_id => profile.id |
923 | assert article.published? | 923 | assert article.published? |
924 | assert_kind_of Person, article.profile | 924 | assert_kind_of Person, article.profile |
925 | ta = ActionTracker::Record.last | 925 | ta = ActionTracker::Record.last |
@@ -927,7 +927,7 @@ class ArticleTest < Test::Unit::TestCase | @@ -927,7 +927,7 @@ class ArticleTest < Test::Unit::TestCase | ||
927 | assert_equal article.url, ta.get_url.last | 927 | assert_equal article.url, ta.get_url.last |
928 | assert_kind_of Person, ta.user | 928 | assert_kind_of Person, ta.user |
929 | ta.back_in_time(26.hours) | 929 | ta.back_in_time(26.hours) |
930 | - article = Article.create! :name => 'Another Tracked Article', :profile_id => profile.id | 930 | + article = TinyMceArticle.create! :name => 'Another Tracked Article', :profile_id => profile.id |
931 | ta = ActionTracker::Record.last | 931 | ta = ActionTracker::Record.last |
932 | assert_equal ['Another Tracked Article'], ta.get_name | 932 | assert_equal ['Another Tracked Article'], ta.get_name |
933 | assert_equal [article.url], ta.get_url | 933 | assert_equal [article.url], ta.get_url |
@@ -945,7 +945,7 @@ class ArticleTest < Test::Unit::TestCase | @@ -945,7 +945,7 @@ class ArticleTest < Test::Unit::TestCase | ||
945 | assert !p3.is_member_of?(community) | 945 | assert !p3.is_member_of?(community) |
946 | Article.destroy_all | 946 | Article.destroy_all |
947 | ActionTracker::Record.destroy_all | 947 | ActionTracker::Record.destroy_all |
948 | - article = Article.create! :name => 'Tracked Article', :profile_id => community.id | 948 | + article = TinyMceArticle.create! :name => 'Tracked Article', :profile_id => community.id |
949 | assert article.published? | 949 | assert article.published? |
950 | assert_kind_of Community, article.profile | 950 | assert_kind_of Community, article.profile |
951 | ta = ActionTracker::Record.last | 951 | ta = ActionTracker::Record.last |
@@ -960,7 +960,7 @@ class ArticleTest < Test::Unit::TestCase | @@ -960,7 +960,7 @@ class ArticleTest < Test::Unit::TestCase | ||
960 | end | 960 | end |
961 | 961 | ||
962 | should 'track action when a published article is updated' do | 962 | should 'track action when a published article is updated' do |
963 | - a = Article.create! :name => 'a', :profile_id => profile.id | 963 | + a = TinyMceArticle.create! :name => 'a', :profile_id => profile.id |
964 | a.update_attributes! :name => 'b' | 964 | a.update_attributes! :name => 'b' |
965 | ta = ActionTracker::Record.last | 965 | ta = ActionTracker::Record.last |
966 | assert_equal ['b'], ta.get_name | 966 | assert_equal ['b'], ta.get_name |
@@ -980,18 +980,44 @@ class ArticleTest < Test::Unit::TestCase | @@ -980,18 +980,44 @@ class ArticleTest < Test::Unit::TestCase | ||
980 | end | 980 | end |
981 | 981 | ||
982 | should 'track action when a published article is removed' do | 982 | should 'track action when a published article is removed' do |
983 | - a = Article.create! :name => 'a', :profile_id => profile.id | 983 | + a = TinyMceArticle.create! :name => 'a', :profile_id => profile.id |
984 | a.destroy | 984 | a.destroy |
985 | ta = ActionTracker::Record.last | 985 | ta = ActionTracker::Record.last |
986 | assert_equal ['a'], ta.get_name | 986 | assert_equal ['a'], ta.get_name |
987 | - a = Article.create! :name => 'b', :profile_id => profile.id | 987 | + a = TinyMceArticle.create! :name => 'b', :profile_id => profile.id |
988 | a.destroy | 988 | a.destroy |
989 | ta = ActionTracker::Record.last | 989 | ta = ActionTracker::Record.last |
990 | assert_equal ['a','b'], ta.get_name | 990 | assert_equal ['a','b'], ta.get_name |
991 | - a = Article.create! :name => 'c', :profile_id => profile.id, :published => false | 991 | + a = TinyMceArticle.create! :name => 'c', :profile_id => profile.id, :published => false |
992 | a.destroy | 992 | a.destroy |
993 | ta = ActionTracker::Record.last | 993 | ta = ActionTracker::Record.last |
994 | assert_equal ['a','b'], ta.get_name | 994 | assert_equal ['a','b'], ta.get_name |
995 | end | 995 | end |
996 | 996 | ||
997 | + should 'notifiable is false by default' do | ||
998 | + a = fast_create(Article) | ||
999 | + assert !a.notifiable? | ||
1000 | + end | ||
1001 | + | ||
1002 | + should 'not notify activity by default on create' do | ||
1003 | + ActionTracker::Record.delete_all | ||
1004 | + Article.create! :name => 'test', :profile_id => fast_create(Profile).id, :published => true | ||
1005 | + assert_equal 0, ActionTracker::Record.count | ||
1006 | + end | ||
1007 | + | ||
1008 | + should 'not notify activity by default on update' do | ||
1009 | + ActionTracker::Record.delete_all | ||
1010 | + a = Article.create! :name => 'bar', :profile_id => fast_create(Profile).id, :published => true | ||
1011 | + a.name = 'foo' | ||
1012 | + a.save! | ||
1013 | + assert_equal 0, ActionTracker::Record.count | ||
1014 | + end | ||
1015 | + | ||
1016 | + should 'not notify activity by default on destroy' do | ||
1017 | + ActionTracker::Record.delete_all | ||
1018 | + a = Article.create! :name => 'bar', :profile_id => fast_create(Profile).id, :published => true | ||
1019 | + a.destroy | ||
1020 | + assert_equal 0, ActionTracker::Record.count | ||
1021 | + end | ||
1022 | + | ||
997 | end | 1023 | end |
test/unit/textile_article_test.rb
@@ -27,4 +27,32 @@ class TextileArticleTest < Test::Unit::TestCase | @@ -27,4 +27,32 @@ class TextileArticleTest < Test::Unit::TestCase | ||
27 | end | 27 | end |
28 | end | 28 | end |
29 | 29 | ||
30 | + should 'notifiable be true' do | ||
31 | + a = fast_create(TextileArticle) | ||
32 | + assert a.notifiable? | ||
33 | + end | ||
34 | + | ||
35 | + should 'notify activity on create' do | ||
36 | + ActionTracker::Record.delete_all | ||
37 | + TextileArticle.create! :name => 'test', :profile_id => fast_create(Profile).id, :published => true | ||
38 | + assert_equal 1, ActionTracker::Record.count | ||
39 | + end | ||
40 | + | ||
41 | + should 'notify activity on update' do | ||
42 | + ActionTracker::Record.delete_all | ||
43 | + a = TextileArticle.create! :name => 'bar', :profile_id => fast_create(Profile).id, :published => true | ||
44 | + assert_equal 1, ActionTracker::Record.count | ||
45 | + a.name = 'foo' | ||
46 | + a.save! | ||
47 | + assert_equal 2, ActionTracker::Record.count | ||
48 | + end | ||
49 | + | ||
50 | + should 'notify activity on destroy' do | ||
51 | + ActionTracker::Record.delete_all | ||
52 | + a = TextileArticle.create! :name => 'bar', :profile_id => fast_create(Profile).id, :published => true | ||
53 | + assert_equal 1, ActionTracker::Record.count | ||
54 | + a.destroy | ||
55 | + assert_equal 2, ActionTracker::Record.count | ||
56 | + end | ||
57 | + | ||
30 | end | 58 | end |
test/unit/tiny_mce_article_test.rb
@@ -118,4 +118,32 @@ class TinyMceArticleTest < Test::Unit::TestCase | @@ -118,4 +118,32 @@ class TinyMceArticleTest < Test::Unit::TestCase | ||
118 | assert_no_match /script/, article.name | 118 | assert_no_match /script/, article.name |
119 | end | 119 | end |
120 | 120 | ||
121 | + should 'notifiable be true' do | ||
122 | + a = fast_create(TinyMceArticle) | ||
123 | + assert a.notifiable? | ||
124 | + end | ||
125 | + | ||
126 | + should 'notify activity on create' do | ||
127 | + ActionTracker::Record.delete_all | ||
128 | + TinyMceArticle.create! :name => 'test', :profile_id => fast_create(Profile).id, :published => true | ||
129 | + assert_equal 1, ActionTracker::Record.count | ||
130 | + end | ||
131 | + | ||
132 | + should 'notify activity on update' do | ||
133 | + ActionTracker::Record.delete_all | ||
134 | + a = TinyMceArticle.create! :name => 'bar', :profile_id => fast_create(Profile).id, :published => true | ||
135 | + assert_equal 1, ActionTracker::Record.count | ||
136 | + a.name = 'foo' | ||
137 | + a.save! | ||
138 | + assert_equal 2, ActionTracker::Record.count | ||
139 | + end | ||
140 | + | ||
141 | + should 'notify activity on destroy' do | ||
142 | + ActionTracker::Record.delete_all | ||
143 | + a = TinyMceArticle.create! :name => 'bar', :profile_id => fast_create(Profile).id, :published => true | ||
144 | + assert_equal 1, ActionTracker::Record.count | ||
145 | + a.destroy | ||
146 | + assert_equal 2, ActionTracker::Record.count | ||
147 | + end | ||
148 | + | ||
121 | end | 149 | end |