Commit f79e0f993efa0c457a388c994565ebbf8b00baac

Authored by Daniela Feitosa
2 parents 3ba61699 e6b525e9

Merge commit 'refs/merge-requests/180' of git://gitorious.org/noosfero/noosfero …

…into merge-requests/180
app/models/task.rb
... ... @@ -4,7 +4,7 @@
4 4 #
5 5 # The specific types of tasks <em>must</em> override the #perform method, so
6 6 # the actual action associated to the type of task can be performed. See the
7   -# documentation of the #perform method for details.
  7 +# documentation of the #perform method for details.
8 8 #
9 9 # This class has a +data+ field of type <tt>text</tt>, where you can store any
10 10 # type of data (as serialized Ruby objects) you need for your subclass (which
... ... @@ -64,7 +64,8 @@ class Task &lt; ActiveRecord::Base
64 64  
65 65 begin
66 66 target_msg = task.target_notification_message
67   - TaskMailer.deliver_target_notification(task, target_msg) if target_msg
  67 + target_emails = task.target && task.target.notification_emails || []
  68 + TaskMailer.deliver_target_notification(task, target_msg) if target_msg && !target_emails.empty?
68 69 rescue NotImplementedError => ex
69 70 RAILS_DEFAULT_LOGGER.info ex.to_s
70 71 end
... ... @@ -192,7 +193,7 @@ class Task &lt; ActiveRecord::Base
192 193  
193 194 # The message that will be sent to the *target* of the task when it is
194 195 # created. The indent of this message is to notify the target about the
195   - # request that was just created for him/her.
  196 + # request that was just created for him/her.
196 197 #
197 198 # The implementation in this class returns +nil+, what makes the notification
198 199 # not to be sent. If you want to send a notification to the target upon task
... ... @@ -225,7 +226,8 @@ class Task &lt; ActiveRecord::Base
225 226  
226 227 begin
227 228 target_msg = target_notification_message
228   - TaskMailer.deliver_target_notification(self, target_msg) if target_msg
  229 + target_emails = self.target && self.target.notification_emails || []
  230 + TaskMailer.deliver_target_notification(self, target_msg) if target_msg && !target_emails.empty?
229 231 rescue NotImplementedError => ex
230 232 RAILS_DEFAULT_LOGGER.info ex.to_s
231 233 end
... ... @@ -253,7 +255,7 @@ class Task &lt; ActiveRecord::Base
253 255  
254 256 # sends notification e-mail about a task, if the task has a requestor.
255 257 #
256   - # If
  258 + # If
257 259 def send_notification(action)
258 260 if sends_email?
259 261 if self.requestor
... ...
test/unit/add_member_test.rb
... ... @@ -54,6 +54,7 @@ class AddMemberTest &lt; ActiveSupport::TestCase
54 54  
55 55 should 'send e-mails' do
56 56 community.update_attribute(:closed, true)
  57 + community.stubs(:notification_emails).returns(["adm@example.com"])
57 58  
58 59 TaskMailer.expects(:deliver_target_notification).at_least_once
59 60  
... ...
test/unit/approve_article_test.rb
... ... @@ -82,6 +82,7 @@ class ApproveArticleTest &lt; ActiveSupport::TestCase
82 82 should 'notify target if group is moderated' do
83 83 community.moderated_articles = true
84 84 community.save
  85 + community.stubs(:notification_emails).returns(['adm@example.com'])
85 86  
86 87 a = ApproveArticle.create!(:name => '', :article => article, :target => community, :requestor => profile)
87 88 assert !ActionMailer::Base.deliveries.empty?
... ...
test/unit/task_test.rb
... ... @@ -128,7 +128,7 @@ class TaskTest &lt; ActiveSupport::TestCase
128 128 task = Task.new
129 129 task.requestor = sample_user
130 130 task.save!
131   -
  131 +
132 132 task.cancel
133 133  
134 134 assert_nil Task.find_by_code(task.code)
... ... @@ -160,6 +160,9 @@ class TaskTest &lt; ActiveSupport::TestCase
160 160  
161 161 should 'send notification to target just after task creation' do
162 162 task = Task.new
  163 + target = Profile.new
  164 + target.stubs(:notification_emails).returns(['adm@example.com'])
  165 + task.target = target
163 166 task.stubs(:target_notification_message).returns('some non nil message to be sent to target')
164 167 TaskMailer.expects(:deliver_target_notification).once
165 168 task.save!
... ... @@ -204,7 +207,7 @@ class TaskTest &lt; ActiveSupport::TestCase
204 207 user.destroy
205 208 end
206 209 end
207   -
  210 +
208 211 should 'not deliver notification message to target' do
209 212 task = Task.new
210 213 assert_raise NotImplementedError do
... ... @@ -228,6 +231,16 @@ class TaskTest &lt; ActiveSupport::TestCase
228 231 task.save!
229 232 end
230 233  
  234 + should 'not notify target if notification emails is empty' do
  235 + task = Task.new
  236 + target = Profile.new
  237 + target.stubs(:notification_emails).returns([])
  238 + task.target = target
  239 + task.stubs(:target_notification_message).returns('some non nil message to be sent to target')
  240 + TaskMailer.expects(:deliver_target_notification).never
  241 + task.save!
  242 + end
  243 +
231 244 should 'the environment method be defined' do
232 245 task = Task.new
233 246 assert task.method_exists?('environment')
... ... @@ -266,6 +279,9 @@ class TaskTest &lt; ActiveSupport::TestCase
266 279  
267 280 should 'send notification message to target just after task activation' do
268 281 task = Task.new(:status => Task::Status::HIDDEN)
  282 + target = Profile.new
  283 + target.stubs(:notification_emails).returns(['target@example.com'])
  284 + task.target = target
269 285 task.save!
270 286 task.stubs(:target_notification_message).returns('some non nil message to be sent to target')
271 287 TaskMailer.expects(:deliver_target_notification).once
... ...