Commit df03fb0f7c2ce6214ed870a7a8c743173b49d7f2

Authored by Joenio Costa
Committed by Antonio Terceiro
1 parent f30fb216

ActionItem1217: No pending tasks when following link received by e-mail

app/models/approve_article.rb
... ... @@ -68,6 +68,7 @@ class ApproveArticle < Task
68 68 end
69 69  
70 70 def target_notification_message
  71 + return nil if target.organization? && !target.moderated_articles?
71 72 description + "\n\n" +
72 73 _('You need to login on %{system} in order to approve or reject this article.') % { :system => target.environment.name }
73 74 end
... ...
app/models/task.rb
... ... @@ -59,7 +59,7 @@ class Task < ActiveRecord::Base
59 59  
60 60 begin
61 61 target_msg = task.target_notification_message
62   - TaskMailer.deliver_target_notification(task, target_msg)
  62 + TaskMailer.deliver_target_notification(task, target_msg) if target_msg
63 63 rescue NotImplementedError => ex
64 64 RAILS_DEFAULT_LOGGER.info ex.to_s
65 65 end
... ...
test/unit/approve_article_test.rb
... ... @@ -2,8 +2,15 @@ require File.dirname(__FILE__) + '/../test_helper'
2 2  
3 3 class ApproveArticleTest < ActiveSupport::TestCase
4 4  
  5 + def setup
  6 + ActionMailer::Base.delivery_method = :test
  7 + ActionMailer::Base.perform_deliveries = true
  8 + ActionMailer::Base.deliveries = []
  9 + @profile = create_user('test_user').person
  10 + end
  11 + attr_reader :profile
  12 +
5 13 should 'have name, reference article and profile' do
6   - profile = create_user('test_user').person
7 14 article = profile.articles.create!(:name => 'test article')
8 15  
9 16 a = ApproveArticle.create!(:name => 'test name', :article => article, :target => profile, :requestor => profile)
... ... @@ -14,7 +21,6 @@ class ApproveArticleTest &lt; ActiveSupport::TestCase
14 21 end
15 22  
16 23 should 'create published article when finished' do
17   - profile = create_user('test_user').person
18 24 article = profile.articles.create!(:name => 'test article')
19 25 a = ApproveArticle.create!(:name => 'test name', :article => article, :target => profile, :requestor => profile)
20 26  
... ... @@ -24,7 +30,7 @@ class ApproveArticleTest &lt; ActiveSupport::TestCase
24 30 end
25 31  
26 32 should 'override target notification message method from Task' do
27   - p1 = create_user('testuser1').person
  33 + p1 = profile
28 34 p2 = create_user('testuser2').person
29 35 task = AddFriend.new(:person => p1, :friend => p2)
30 36 assert_nothing_raised NotImplementedError do
... ... @@ -33,7 +39,6 @@ class ApproveArticleTest &lt; ActiveSupport::TestCase
33 39 end
34 40  
35 41 should 'have parent if defined' do
36   - profile = create_user('test_user').person
37 42 article = profile.articles.create!(:name => 'test article')
38 43 folder = profile.articles.create!(:name => 'test folder', :type => 'Folder')
39 44  
... ... @@ -43,7 +48,6 @@ class ApproveArticleTest &lt; ActiveSupport::TestCase
43 48 end
44 49  
45 50 should 'not have parent if not defined' do
46   - profile = create_user('test_user').person
47 51 article = profile.articles.create!(:name => 'test article')
48 52  
49 53 a = ApproveArticle.create!(:name => 'test name', :article => article, :target => profile, :requestor => profile)
... ... @@ -52,7 +56,6 @@ class ApproveArticleTest &lt; ActiveSupport::TestCase
52 56 end
53 57  
54 58 should 'alert when reference article is removed' do
55   - profile = create_user('test_user').person
56 59 article = profile.articles.create!(:name => 'test article')
57 60  
58 61 a = ApproveArticle.create!(:name => 'test name', :article => article, :target => profile, :requestor => profile)
... ... @@ -64,7 +67,6 @@ class ApproveArticleTest &lt; ActiveSupport::TestCase
64 67 end
65 68  
66 69 should 'preserve article_parent' do
67   - profile = create_user('test_user').person
68 70 article = profile.articles.create!(:name => 'test article')
69 71 a = ApproveArticle.new(:article_parent => article)
70 72  
... ... @@ -72,7 +74,6 @@ class ApproveArticleTest &lt; ActiveSupport::TestCase
72 74 end
73 75  
74 76 should 'handle blank names' do
75   - profile = create_user('test_user').person
76 77 article = profile.articles.create!(:name => 'test article')
77 78 community = Community.create!(:name => 'test comm')
78 79 a = ApproveArticle.create!(:name => '', :article => article, :target => community, :requestor => profile)
... ... @@ -81,4 +82,19 @@ class ApproveArticleTest &lt; ActiveSupport::TestCase
81 82 a.finish
82 83 end
83 84 end
  85 +
  86 + should 'notify target if group is moderated' do
  87 + article = profile.articles.create!(:name => 'test article')
  88 + community = Community.create!(:name => 'test comm', :moderated_articles => true)
  89 + a = ApproveArticle.create!(:name => '', :article => article, :target => community, :requestor => profile)
  90 + assert !ActionMailer::Base.deliveries.empty?
  91 + end
  92 +
  93 + should 'not notify target if group is not moderated' do
  94 + article = profile.articles.create!(:name => 'test article')
  95 + community = Community.create!(:name => 'test comm', :moderated_articles => false)
  96 + a = ApproveArticle.create!(:name => '', :article => article, :target => community, :requestor => profile)
  97 + assert ActionMailer::Base.deliveries.empty?
  98 + end
  99 +
84 100 end
... ...
test/unit/task_test.rb
... ... @@ -207,6 +207,13 @@ class TaskTest &lt; Test::Unit::TestCase
207 207 end
208 208 end
209 209  
  210 + should 'not notify target if message is nil' do
  211 + task = Task.new
  212 + task.stubs(:target_notification_message).returns(nil)
  213 + TaskMailer.expects(:deliver_target_notification).never
  214 + task.save!
  215 + end
  216 +
210 217 protected
211 218  
212 219 def sample_user
... ...