From df03fb0f7c2ce6214ed870a7a8c743173b49d7f2 Mon Sep 17 00:00:00 2001 From: Joenio Costa Date: Tue, 25 Aug 2009 14:18:58 -0300 Subject: [PATCH] ActionItem1217: No pending tasks when following link received by e-mail --- app/models/approve_article.rb | 1 + app/models/task.rb | 2 +- test/unit/approve_article_test.rb | 32 ++++++++++++++++++++++++-------- test/unit/task_test.rb | 7 +++++++ 4 files changed, 33 insertions(+), 9 deletions(-) diff --git a/app/models/approve_article.rb b/app/models/approve_article.rb index 4475cb2..a32a29f 100644 --- a/app/models/approve_article.rb +++ b/app/models/approve_article.rb @@ -68,6 +68,7 @@ class ApproveArticle < Task end def target_notification_message + return nil if target.organization? && !target.moderated_articles? description + "\n\n" + _('You need to login on %{system} in order to approve or reject this article.') % { :system => target.environment.name } end diff --git a/app/models/task.rb b/app/models/task.rb index 4e5be50..6ec9c83 100644 --- a/app/models/task.rb +++ b/app/models/task.rb @@ -59,7 +59,7 @@ class Task < ActiveRecord::Base begin target_msg = task.target_notification_message - TaskMailer.deliver_target_notification(task, target_msg) + TaskMailer.deliver_target_notification(task, target_msg) if target_msg rescue NotImplementedError => ex RAILS_DEFAULT_LOGGER.info ex.to_s end diff --git a/test/unit/approve_article_test.rb b/test/unit/approve_article_test.rb index 4e53d49..af35f81 100644 --- a/test/unit/approve_article_test.rb +++ b/test/unit/approve_article_test.rb @@ -2,8 +2,15 @@ require File.dirname(__FILE__) + '/../test_helper' class ApproveArticleTest < ActiveSupport::TestCase + def setup + ActionMailer::Base.delivery_method = :test + ActionMailer::Base.perform_deliveries = true + ActionMailer::Base.deliveries = [] + @profile = create_user('test_user').person + end + attr_reader :profile + should 'have name, reference article and profile' do - profile = create_user('test_user').person article = profile.articles.create!(:name => 'test article') a = ApproveArticle.create!(:name => 'test name', :article => article, :target => profile, :requestor => profile) @@ -14,7 +21,6 @@ class ApproveArticleTest < ActiveSupport::TestCase end should 'create published article when finished' do - profile = create_user('test_user').person article = profile.articles.create!(:name => 'test article') a = ApproveArticle.create!(:name => 'test name', :article => article, :target => profile, :requestor => profile) @@ -24,7 +30,7 @@ class ApproveArticleTest < ActiveSupport::TestCase end should 'override target notification message method from Task' do - p1 = create_user('testuser1').person + p1 = profile p2 = create_user('testuser2').person task = AddFriend.new(:person => p1, :friend => p2) assert_nothing_raised NotImplementedError do @@ -33,7 +39,6 @@ class ApproveArticleTest < ActiveSupport::TestCase end should 'have parent if defined' do - profile = create_user('test_user').person article = profile.articles.create!(:name => 'test article') folder = profile.articles.create!(:name => 'test folder', :type => 'Folder') @@ -43,7 +48,6 @@ class ApproveArticleTest < ActiveSupport::TestCase end should 'not have parent if not defined' do - profile = create_user('test_user').person article = profile.articles.create!(:name => 'test article') a = ApproveArticle.create!(:name => 'test name', :article => article, :target => profile, :requestor => profile) @@ -52,7 +56,6 @@ class ApproveArticleTest < ActiveSupport::TestCase end should 'alert when reference article is removed' do - profile = create_user('test_user').person article = profile.articles.create!(:name => 'test article') a = ApproveArticle.create!(:name => 'test name', :article => article, :target => profile, :requestor => profile) @@ -64,7 +67,6 @@ class ApproveArticleTest < ActiveSupport::TestCase end should 'preserve article_parent' do - profile = create_user('test_user').person article = profile.articles.create!(:name => 'test article') a = ApproveArticle.new(:article_parent => article) @@ -72,7 +74,6 @@ class ApproveArticleTest < ActiveSupport::TestCase end should 'handle blank names' do - profile = create_user('test_user').person article = profile.articles.create!(:name => 'test article') community = Community.create!(:name => 'test comm') a = ApproveArticle.create!(:name => '', :article => article, :target => community, :requestor => profile) @@ -81,4 +82,19 @@ class ApproveArticleTest < ActiveSupport::TestCase a.finish end end + + should 'notify target if group is moderated' do + article = profile.articles.create!(:name => 'test article') + community = Community.create!(:name => 'test comm', :moderated_articles => true) + a = ApproveArticle.create!(:name => '', :article => article, :target => community, :requestor => profile) + assert !ActionMailer::Base.deliveries.empty? + end + + should 'not notify target if group is not moderated' do + article = profile.articles.create!(:name => 'test article') + community = Community.create!(:name => 'test comm', :moderated_articles => false) + a = ApproveArticle.create!(:name => '', :article => article, :target => community, :requestor => profile) + assert ActionMailer::Base.deliveries.empty? + end + end diff --git a/test/unit/task_test.rb b/test/unit/task_test.rb index 2f7723f..920f2bb 100644 --- a/test/unit/task_test.rb +++ b/test/unit/task_test.rb @@ -207,6 +207,13 @@ class TaskTest < Test::Unit::TestCase end end + should 'not notify target if message is nil' do + task = Task.new + task.stubs(:target_notification_message).returns(nil) + TaskMailer.expects(:deliver_target_notification).never + task.save! + end + protected def sample_user -- libgit2 0.21.2