Commit 128b006ceda39383d1fa92b6c333eadb0363d27e
Committed by
Antonio Terceiro
1 parent
556bf994
Exists in
master
and in
29 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 |