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