Commit 128b006ceda39383d1fa92b6c333eadb0363d27e

Authored by Caio SBA
Committed by Antonio Terceiro
1 parent 556bf994

Article's actions are not tracked by default. By now, textile and tinymce's actions are tracked

app/models/article.rb
... ... @@ -2,10 +2,10 @@ require 'hpricot'
2 2  
3 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 10 # xss_terminate plugin can't sanitize array fields
11 11 before_save :sanitize_tag_list
... ... @@ -360,6 +360,10 @@ class Article &lt; ActiveRecord::Base
360 360 creator_id && Profile.find(creator_id)
361 361 end
362 362  
  363 + def notifiable?
  364 + false
  365 + end
  366 +
363 367 private
364 368  
365 369 def sanitize_tag_list
... ...
app/models/textile_article.rb
... ... @@ -12,4 +12,8 @@ class TextileArticle &lt; TextArticle
12 12 RedCloth.new(self.body|| '').to_html
13 13 end
14 14  
  15 + def notifiable?
  16 + true
  17 + end
  18 +
15 19 end
... ...
app/models/tiny_mce_article.rb
... ... @@ -15,4 +15,8 @@ class TinyMceArticle &lt; TextArticle
15 15 include WhiteListFilter
16 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 22 end
... ...
test/unit/article_test.rb
... ... @@ -919,7 +919,7 @@ class ArticleTest &lt; Test::Unit::TestCase
919 919 end
920 920  
921 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 923 assert article.published?
924 924 assert_kind_of Person, article.profile
925 925 ta = ActionTracker::Record.last
... ... @@ -927,7 +927,7 @@ class ArticleTest &lt; Test::Unit::TestCase
927 927 assert_equal article.url, ta.get_url.last
928 928 assert_kind_of Person, ta.user
929 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 931 ta = ActionTracker::Record.last
932 932 assert_equal ['Another Tracked Article'], ta.get_name
933 933 assert_equal [article.url], ta.get_url
... ... @@ -945,7 +945,7 @@ class ArticleTest &lt; Test::Unit::TestCase
945 945 assert !p3.is_member_of?(community)
946 946 Article.destroy_all
947 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 949 assert article.published?
950 950 assert_kind_of Community, article.profile
951 951 ta = ActionTracker::Record.last
... ... @@ -960,7 +960,7 @@ class ArticleTest &lt; Test::Unit::TestCase
960 960 end
961 961  
962 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 964 a.update_attributes! :name => 'b'
965 965 ta = ActionTracker::Record.last
966 966 assert_equal ['b'], ta.get_name
... ... @@ -980,18 +980,44 @@ class ArticleTest &lt; Test::Unit::TestCase
980 980 end
981 981  
982 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 984 a.destroy
985 985 ta = ActionTracker::Record.last
986 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 988 a.destroy
989 989 ta = ActionTracker::Record.last
990 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 992 a.destroy
993 993 ta = ActionTracker::Record.last
994 994 assert_equal ['a','b'], ta.get_name
995 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 1023 end
... ...
test/unit/textile_article_test.rb
... ... @@ -27,4 +27,32 @@ class TextileArticleTest &lt; Test::Unit::TestCase
27 27 end
28 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 58 end
... ...
test/unit/tiny_mce_article_test.rb
... ... @@ -118,4 +118,32 @@ class TinyMceArticleTest &lt; Test::Unit::TestCase
118 118 assert_no_match /script/, article.name
119 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 149 end
... ...