Commit 4844d8a7f0e501c6aea07fba8038a7d7b29896a7

Authored by Leandro Santos
Committed by Antonio Terceiro
1 parent 3abf2bac

The suggestion of the article must be reported to the profile(s) moderator(s) by email.

(ActionItem1732)
app/models/change_password.rb
@@ -91,4 +91,8 @@ class ChangePassword < Task @@ -91,4 +91,8 @@ class ChangePassword < Task
91 _('Password change request') 91 _('Password change request')
92 end 92 end
93 93
  94 + def environment
  95 + self.requestor.environment
  96 + end
  97 +
94 end 98 end
app/models/invitation.rb
@@ -125,4 +125,9 @@ class Invitation < Task @@ -125,4 +125,9 @@ class Invitation < Task
125 def self.default_message_to_accept_invitation 125 def self.default_message_to_accept_invitation
126 "\n\n" + _('To accept invitation, please follow this link: <url>') 126 "\n\n" + _('To accept invitation, please follow this link: <url>')
127 end 127 end
  128 +
  129 + def environment
  130 + self.requestor.environment
  131 + end
  132 +
128 end 133 end
app/models/suggest_article.rb
@@ -38,4 +38,9 @@ class SuggestArticle &lt; Task @@ -38,4 +38,9 @@ class SuggestArticle &lt; Task
38 ) 38 )
39 end 39 end
40 40
  41 + def target_notification_message
  42 + description + "\n\n" +
  43 + _('You need to login on %{system} in order to approve or reject this article.') % { :system => target.environment.name }
  44 + end
  45 +
41 end 46 end
app/models/task.rb
@@ -144,6 +144,10 @@ class Task &lt; ActiveRecord::Base @@ -144,6 +144,10 @@ class Task &lt; ActiveRecord::Base
144 :perform_task 144 :perform_task
145 end 145 end
146 146
  147 + def environment
  148 + self.target.environment unless self.target.nil?
  149 + end
  150 +
147 protected 151 protected
148 152
149 # This method must be overrided in subclasses, and its implementation must do 153 # This method must be overrided in subclasses, and its implementation must do
app/models/task_mailer.rb
@@ -17,11 +17,10 @@ class TaskMailer &lt; ActionMailer::Base @@ -17,11 +17,10 @@ class TaskMailer &lt; ActionMailer::Base
17 url_for_tasks_list = task.target.kind_of?(Environment) ? '' : url_for(task.target.url.merge(:controller => 'tasks', :action => 'index')) 17 url_for_tasks_list = task.target.kind_of?(Environment) ? '' : url_for(task.target.url.merge(:controller => 'tasks', :action => 'index'))
18 18
19 from self.class.generate_from(task) 19 from self.class.generate_from(task)
20 - subject '[%s] %s' % [task.requestor.environment.name, task.description]  
21 - body :requestor => task.requestor.name,  
22 - :target => task.target.name, 20 + subject '[%s] %s' % [task.environment.name, task.description]
  21 + body :target => task.target.name,
23 :message => msg, 22 :message => msg,
24 - :environment => task.requestor.environment.name, 23 + :environment => task.environment.name,
25 :url => generate_environment_url(task, :controller => 'home'), 24 :url => generate_environment_url(task, :controller => 'home'),
26 :tasks_url => url_for_tasks_list 25 :tasks_url => url_for_tasks_list
27 end 26 end
@@ -61,11 +60,11 @@ class TaskMailer &lt; ActionMailer::Base @@ -61,11 +60,11 @@ class TaskMailer &lt; ActionMailer::Base
61 end 60 end
62 61
63 def self.generate_from(task) 62 def self.generate_from(task)
64 - "#{task.requestor.environment.name} <#{task.requestor.environment.contact_email}>" 63 + "#{task.environment.name} <#{task.environment.contact_email}>"
65 end 64 end
66 65
67 def generate_environment_url(task, url = {}) 66 def generate_environment_url(task, url = {})
68 - url_for(Noosfero.url_options.merge(:host => task.requestor.environment.default_hostname).merge(url)) 67 + url_for(Noosfero.url_options.merge(:host => task.environment.default_hostname).merge(url))
69 end 68 end
70 69
71 end 70 end
test/unit/suggest_article_test.rb
@@ -119,4 +119,16 @@ class SuggestArticleTest &lt; ActiveSupport::TestCase @@ -119,4 +119,16 @@ class SuggestArticleTest &lt; ActiveSupport::TestCase
119 assert article.highlighted 119 assert article.highlighted
120 end 120 end
121 121
  122 + should 'override target notification message method from Task' do
  123 + task = build(SuggestArticle, :target => @profile)
  124 + assert_nothing_raised NotImplementedError do
  125 + task.target_notification_message
  126 + end
  127 + end
  128 +
  129 + should 'notify community moderators after create article suggestions' do
  130 + task = build(SuggestArticle, :target => @profile)
  131 + task.save
  132 + end
  133 +
122 end 134 end
test/unit/task_mailer_test.rb
@@ -30,6 +30,7 @@ class TaskMailerTest &lt; Test::Unit::TestCase @@ -30,6 +30,7 @@ class TaskMailerTest &lt; Test::Unit::TestCase
30 30
31 task.expects(:requestor).returns(requestor).at_least_once 31 task.expects(:requestor).returns(requestor).at_least_once
32 requestor.expects(:environment).returns(environment).at_least_once 32 requestor.expects(:environment).returns(environment).at_least_once
  33 + task.expects(:environment).returns(environment).at_least_once
33 34
34 TaskMailer.deliver_task_finished(task) 35 TaskMailer.deliver_task_finished(task)
35 assert !ActionMailer::Base.deliveries.empty? 36 assert !ActionMailer::Base.deliveries.empty?
@@ -52,6 +53,7 @@ class TaskMailerTest &lt; Test::Unit::TestCase @@ -52,6 +53,7 @@ class TaskMailerTest &lt; Test::Unit::TestCase
52 53
53 task.expects(:requestor).returns(requestor).at_least_once 54 task.expects(:requestor).returns(requestor).at_least_once
54 requestor.expects(:environment).returns(environment).at_least_once 55 requestor.expects(:environment).returns(environment).at_least_once
  56 + task.expects(:environment).returns(environment).at_least_once
55 57
56 TaskMailer.deliver_task_cancelled(task) 58 TaskMailer.deliver_task_cancelled(task)
57 assert !ActionMailer::Base.deliveries.empty? 59 assert !ActionMailer::Base.deliveries.empty?
@@ -75,6 +77,7 @@ class TaskMailerTest &lt; Test::Unit::TestCase @@ -75,6 +77,7 @@ class TaskMailerTest &lt; Test::Unit::TestCase
75 77
76 task.expects(:requestor).returns(requestor).at_least_once 78 task.expects(:requestor).returns(requestor).at_least_once
77 requestor.expects(:environment).returns(environment).at_least_once 79 requestor.expects(:environment).returns(environment).at_least_once
  80 + task.expects(:environment).returns(environment).at_least_once
78 81
79 TaskMailer.deliver_task_created(task) 82 TaskMailer.deliver_task_created(task)
80 assert !ActionMailer::Base.deliveries.empty? 83 assert !ActionMailer::Base.deliveries.empty?
@@ -84,9 +87,6 @@ class TaskMailerTest &lt; Test::Unit::TestCase @@ -84,9 +87,6 @@ class TaskMailerTest &lt; Test::Unit::TestCase
84 task = Task.new 87 task = Task.new
85 task.expects(:description).returns('the task') 88 task.expects(:description).returns('the task')
86 89
87 - requestor = mock()  
88 - requestor.expects(:name).returns('my name')  
89 -  
90 target = mock() 90 target = mock()
91 target.expects(:notification_emails).returns(['target@example.com']) 91 target.expects(:notification_emails).returns(['target@example.com'])
92 target.expects(:name).returns('Target') 92 target.expects(:name).returns('Target')
@@ -97,9 +97,8 @@ class TaskMailerTest &lt; Test::Unit::TestCase @@ -97,9 +97,8 @@ class TaskMailerTest &lt; Test::Unit::TestCase
97 environment.expects(:default_hostname).returns('example.com') 97 environment.expects(:default_hostname).returns('example.com')
98 environment.expects(:name).returns('example').at_least_once 98 environment.expects(:name).returns('example').at_least_once
99 99
100 - task.expects(:requestor).returns(requestor).at_least_once  
101 task.expects(:target).returns(target).at_least_once 100 task.expects(:target).returns(target).at_least_once
102 - requestor.expects(:environment).returns(environment).at_least_once 101 + task.expects(:environment).returns(environment).at_least_once
103 102
104 TaskMailer.deliver_target_notification(task, 'the message') 103 TaskMailer.deliver_target_notification(task, 'the message')
105 assert !ActionMailer::Base.deliveries.empty? 104 assert !ActionMailer::Base.deliveries.empty?
@@ -126,6 +125,7 @@ class TaskMailerTest &lt; Test::Unit::TestCase @@ -126,6 +125,7 @@ class TaskMailerTest &lt; Test::Unit::TestCase
126 task.expects(:requestor).returns(requestor).at_least_once 125 task.expects(:requestor).returns(requestor).at_least_once
127 task.expects(:person).returns(requestor).at_least_once 126 task.expects(:person).returns(requestor).at_least_once
128 requestor.expects(:environment).returns(environment).at_least_once 127 requestor.expects(:environment).returns(environment).at_least_once
  128 + task.expects(:environment).returns(environment).at_least_once
129 129
130 mail = TaskMailer.create_invitation_notification(task) 130 mail = TaskMailer.create_invitation_notification(task)
131 131
@@ -137,13 +137,11 @@ class TaskMailerTest &lt; Test::Unit::TestCase @@ -137,13 +137,11 @@ class TaskMailerTest &lt; Test::Unit::TestCase
137 137
138 should 'use environment name and contact email' do 138 should 'use environment name and contact email' do
139 task = mock 139 task = mock
140 - requestor = mock  
141 environment = mock 140 environment = mock
142 environment.expects(:name).returns('My name') 141 environment.expects(:name).returns('My name')
143 environment.expects(:contact_email).returns('email@example.com') 142 environment.expects(:contact_email).returns('email@example.com')
144 143
145 - task.expects(:requestor).returns(requestor).at_least_once  
146 - requestor.expects(:environment).returns(environment).at_least_once 144 + task.expects(:environment).returns(environment).at_least_once
147 145
148 assert_equal 'My name <email@example.com>', TaskMailer.generate_from(task) 146 assert_equal 'My name <email@example.com>', TaskMailer.generate_from(task)
149 end 147 end
test/unit/task_test.rb
@@ -214,6 +214,23 @@ class TaskTest &lt; Test::Unit::TestCase @@ -214,6 +214,23 @@ class TaskTest &lt; Test::Unit::TestCase
214 task.save! 214 task.save!
215 end 215 end
216 216
  217 + should 'the environment method be defined' do
  218 + task = Task.new
  219 + assert task.method_exists?('environment')
  220 + end
  221 +
  222 + should 'the task environment method return the target environment' do
  223 + task = Task.new
  224 + target = Profile.new(:environment => Environment.new)
  225 + task.target = target
  226 + assert_equal task.environment, target.environment
  227 + end
  228 +
  229 + should 'the task environment method return nil if the target task is nil' do
  230 + task = Task.new
  231 + assert_equal task.environment, nil
  232 + end
  233 +
217 protected 234 protected
218 235
219 def sample_user 236 def sample_user