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 91 _('Password change request')
92 92 end
93 93  
  94 + def environment
  95 + self.requestor.environment
  96 + end
  97 +
94 98 end
... ...
app/models/invitation.rb
... ... @@ -125,4 +125,9 @@ class Invitation < Task
125 125 def self.default_message_to_accept_invitation
126 126 "\n\n" + _('To accept invitation, please follow this link: <url>')
127 127 end
  128 +
  129 + def environment
  130 + self.requestor.environment
  131 + end
  132 +
128 133 end
... ...
app/models/suggest_article.rb
... ... @@ -38,4 +38,9 @@ class SuggestArticle &lt; Task
38 38 )
39 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 46 end
... ...
app/models/task.rb
... ... @@ -144,6 +144,10 @@ class Task &lt; ActiveRecord::Base
144 144 :perform_task
145 145 end
146 146  
  147 + def environment
  148 + self.target.environment unless self.target.nil?
  149 + end
  150 +
147 151 protected
148 152  
149 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 17 url_for_tasks_list = task.target.kind_of?(Environment) ? '' : url_for(task.target.url.merge(:controller => 'tasks', :action => 'index'))
18 18  
19 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 22 :message => msg,
24   - :environment => task.requestor.environment.name,
  23 + :environment => task.environment.name,
25 24 :url => generate_environment_url(task, :controller => 'home'),
26 25 :tasks_url => url_for_tasks_list
27 26 end
... ... @@ -61,11 +60,11 @@ class TaskMailer &lt; ActionMailer::Base
61 60 end
62 61  
63 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 64 end
66 65  
67 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 68 end
70 69  
71 70 end
... ...
test/unit/suggest_article_test.rb
... ... @@ -119,4 +119,16 @@ class SuggestArticleTest &lt; ActiveSupport::TestCase
119 119 assert article.highlighted
120 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 134 end
... ...
test/unit/task_mailer_test.rb
... ... @@ -30,6 +30,7 @@ class TaskMailerTest &lt; Test::Unit::TestCase
30 30  
31 31 task.expects(:requestor).returns(requestor).at_least_once
32 32 requestor.expects(:environment).returns(environment).at_least_once
  33 + task.expects(:environment).returns(environment).at_least_once
33 34  
34 35 TaskMailer.deliver_task_finished(task)
35 36 assert !ActionMailer::Base.deliveries.empty?
... ... @@ -52,6 +53,7 @@ class TaskMailerTest &lt; Test::Unit::TestCase
52 53  
53 54 task.expects(:requestor).returns(requestor).at_least_once
54 55 requestor.expects(:environment).returns(environment).at_least_once
  56 + task.expects(:environment).returns(environment).at_least_once
55 57  
56 58 TaskMailer.deliver_task_cancelled(task)
57 59 assert !ActionMailer::Base.deliveries.empty?
... ... @@ -75,6 +77,7 @@ class TaskMailerTest &lt; Test::Unit::TestCase
75 77  
76 78 task.expects(:requestor).returns(requestor).at_least_once
77 79 requestor.expects(:environment).returns(environment).at_least_once
  80 + task.expects(:environment).returns(environment).at_least_once
78 81  
79 82 TaskMailer.deliver_task_created(task)
80 83 assert !ActionMailer::Base.deliveries.empty?
... ... @@ -84,9 +87,6 @@ class TaskMailerTest &lt; Test::Unit::TestCase
84 87 task = Task.new
85 88 task.expects(:description).returns('the task')
86 89  
87   - requestor = mock()
88   - requestor.expects(:name).returns('my name')
89   -
90 90 target = mock()
91 91 target.expects(:notification_emails).returns(['target@example.com'])
92 92 target.expects(:name).returns('Target')
... ... @@ -97,9 +97,8 @@ class TaskMailerTest &lt; Test::Unit::TestCase
97 97 environment.expects(:default_hostname).returns('example.com')
98 98 environment.expects(:name).returns('example').at_least_once
99 99  
100   - task.expects(:requestor).returns(requestor).at_least_once
101 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 103 TaskMailer.deliver_target_notification(task, 'the message')
105 104 assert !ActionMailer::Base.deliveries.empty?
... ... @@ -126,6 +125,7 @@ class TaskMailerTest &lt; Test::Unit::TestCase
126 125 task.expects(:requestor).returns(requestor).at_least_once
127 126 task.expects(:person).returns(requestor).at_least_once
128 127 requestor.expects(:environment).returns(environment).at_least_once
  128 + task.expects(:environment).returns(environment).at_least_once
129 129  
130 130 mail = TaskMailer.create_invitation_notification(task)
131 131  
... ... @@ -137,13 +137,11 @@ class TaskMailerTest &lt; Test::Unit::TestCase
137 137  
138 138 should 'use environment name and contact email' do
139 139 task = mock
140   - requestor = mock
141 140 environment = mock
142 141 environment.expects(:name).returns('My name')
143 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 146 assert_equal 'My name <email@example.com>', TaskMailer.generate_from(task)
149 147 end
... ...
test/unit/task_test.rb
... ... @@ -214,6 +214,23 @@ class TaskTest &lt; Test::Unit::TestCase
214 214 task.save!
215 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 234 protected
218 235  
219 236 def sample_user
... ...