diff --git a/app/models/change_password.rb b/app/models/change_password.rb index 90b11cd..aa0a349 100644 --- a/app/models/change_password.rb +++ b/app/models/change_password.rb @@ -91,4 +91,8 @@ class ChangePassword < Task _('Password change request') end + def environment + self.requestor.environment + end + end diff --git a/app/models/invitation.rb b/app/models/invitation.rb index 26a0490..13aaaf7 100644 --- a/app/models/invitation.rb +++ b/app/models/invitation.rb @@ -125,4 +125,9 @@ class Invitation < Task def self.default_message_to_accept_invitation "\n\n" + _('To accept invitation, please follow this link: ') end + + def environment + self.requestor.environment + end + end diff --git a/app/models/suggest_article.rb b/app/models/suggest_article.rb index d98e761..35dd094 100644 --- a/app/models/suggest_article.rb +++ b/app/models/suggest_article.rb @@ -38,4 +38,9 @@ class SuggestArticle < Task ) end + def target_notification_message + description + "\n\n" + + _('You need to login on %{system} in order to approve or reject this article.') % { :system => target.environment.name } + end + end diff --git a/app/models/task.rb b/app/models/task.rb index acccea3..4a8c65e 100644 --- a/app/models/task.rb +++ b/app/models/task.rb @@ -144,6 +144,10 @@ class Task < ActiveRecord::Base :perform_task end + def environment + self.target.environment unless self.target.nil? + end + protected # This method must be overrided in subclasses, and its implementation must do diff --git a/app/models/task_mailer.rb b/app/models/task_mailer.rb index f279bf2..1dcd5b7 100644 --- a/app/models/task_mailer.rb +++ b/app/models/task_mailer.rb @@ -17,11 +17,10 @@ class TaskMailer < ActionMailer::Base url_for_tasks_list = task.target.kind_of?(Environment) ? '' : url_for(task.target.url.merge(:controller => 'tasks', :action => 'index')) from self.class.generate_from(task) - subject '[%s] %s' % [task.requestor.environment.name, task.description] - body :requestor => task.requestor.name, - :target => task.target.name, + subject '[%s] %s' % [task.environment.name, task.description] + body :target => task.target.name, :message => msg, - :environment => task.requestor.environment.name, + :environment => task.environment.name, :url => generate_environment_url(task, :controller => 'home'), :tasks_url => url_for_tasks_list end @@ -61,11 +60,11 @@ class TaskMailer < ActionMailer::Base end def self.generate_from(task) - "#{task.requestor.environment.name} <#{task.requestor.environment.contact_email}>" + "#{task.environment.name} <#{task.environment.contact_email}>" end def generate_environment_url(task, url = {}) - url_for(Noosfero.url_options.merge(:host => task.requestor.environment.default_hostname).merge(url)) + url_for(Noosfero.url_options.merge(:host => task.environment.default_hostname).merge(url)) end end diff --git a/test/unit/suggest_article_test.rb b/test/unit/suggest_article_test.rb index 12f7f23..00b1995 100644 --- a/test/unit/suggest_article_test.rb +++ b/test/unit/suggest_article_test.rb @@ -119,4 +119,16 @@ class SuggestArticleTest < ActiveSupport::TestCase assert article.highlighted end + should 'override target notification message method from Task' do + task = build(SuggestArticle, :target => @profile) + assert_nothing_raised NotImplementedError do + task.target_notification_message + end + end + + should 'notify community moderators after create article suggestions' do + task = build(SuggestArticle, :target => @profile) + task.save + end + end diff --git a/test/unit/task_mailer_test.rb b/test/unit/task_mailer_test.rb index 568f9f7..224fa3c 100644 --- a/test/unit/task_mailer_test.rb +++ b/test/unit/task_mailer_test.rb @@ -30,6 +30,7 @@ class TaskMailerTest < Test::Unit::TestCase task.expects(:requestor).returns(requestor).at_least_once requestor.expects(:environment).returns(environment).at_least_once + task.expects(:environment).returns(environment).at_least_once TaskMailer.deliver_task_finished(task) assert !ActionMailer::Base.deliveries.empty? @@ -52,6 +53,7 @@ class TaskMailerTest < Test::Unit::TestCase task.expects(:requestor).returns(requestor).at_least_once requestor.expects(:environment).returns(environment).at_least_once + task.expects(:environment).returns(environment).at_least_once TaskMailer.deliver_task_cancelled(task) assert !ActionMailer::Base.deliveries.empty? @@ -75,6 +77,7 @@ class TaskMailerTest < Test::Unit::TestCase task.expects(:requestor).returns(requestor).at_least_once requestor.expects(:environment).returns(environment).at_least_once + task.expects(:environment).returns(environment).at_least_once TaskMailer.deliver_task_created(task) assert !ActionMailer::Base.deliveries.empty? @@ -84,9 +87,6 @@ class TaskMailerTest < Test::Unit::TestCase task = Task.new task.expects(:description).returns('the task') - requestor = mock() - requestor.expects(:name).returns('my name') - target = mock() target.expects(:notification_emails).returns(['target@example.com']) target.expects(:name).returns('Target') @@ -97,9 +97,8 @@ class TaskMailerTest < Test::Unit::TestCase environment.expects(:default_hostname).returns('example.com') environment.expects(:name).returns('example').at_least_once - task.expects(:requestor).returns(requestor).at_least_once task.expects(:target).returns(target).at_least_once - requestor.expects(:environment).returns(environment).at_least_once + task.expects(:environment).returns(environment).at_least_once TaskMailer.deliver_target_notification(task, 'the message') assert !ActionMailer::Base.deliveries.empty? @@ -126,6 +125,7 @@ class TaskMailerTest < Test::Unit::TestCase task.expects(:requestor).returns(requestor).at_least_once task.expects(:person).returns(requestor).at_least_once requestor.expects(:environment).returns(environment).at_least_once + task.expects(:environment).returns(environment).at_least_once mail = TaskMailer.create_invitation_notification(task) @@ -137,13 +137,11 @@ class TaskMailerTest < Test::Unit::TestCase should 'use environment name and contact email' do task = mock - requestor = mock environment = mock environment.expects(:name).returns('My name') environment.expects(:contact_email).returns('email@example.com') - task.expects(:requestor).returns(requestor).at_least_once - requestor.expects(:environment).returns(environment).at_least_once + task.expects(:environment).returns(environment).at_least_once assert_equal 'My name ', TaskMailer.generate_from(task) end diff --git a/test/unit/task_test.rb b/test/unit/task_test.rb index 920f2bb..ac91249 100644 --- a/test/unit/task_test.rb +++ b/test/unit/task_test.rb @@ -214,6 +214,23 @@ class TaskTest < Test::Unit::TestCase task.save! end + should 'the environment method be defined' do + task = Task.new + assert task.method_exists?('environment') + end + + should 'the task environment method return the target environment' do + task = Task.new + target = Profile.new(:environment => Environment.new) + task.target = target + assert_equal task.environment, target.environment + end + + should 'the task environment method return nil if the target task is nil' do + task = Task.new + assert_equal task.environment, nil + end + protected def sample_user -- libgit2 0.21.2