##// END OF EJS Templates
code layout clean up of test_generated_links_with_prefix_and_no_relative_url_root at test/unit/mailer_test.rb...
Toshi MARUYAMA -
r7380:662474b0e65e
parent child
Show More
@@ -1,467 +1,475
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2011 Jean-Philippe Lang
2 # Copyright (C) 2006-2011 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 require File.expand_path('../../test_helper', __FILE__)
18 require File.expand_path('../../test_helper', __FILE__)
19
19
20 class MailerTest < ActiveSupport::TestCase
20 class MailerTest < ActiveSupport::TestCase
21 include Redmine::I18n
21 include Redmine::I18n
22 include ActionController::Assertions::SelectorAssertions
22 include ActionController::Assertions::SelectorAssertions
23 fixtures :projects, :enabled_modules, :issues, :users, :members,
23 fixtures :projects, :enabled_modules, :issues, :users, :members,
24 :member_roles, :roles, :documents, :attachments, :news,
24 :member_roles, :roles, :documents, :attachments, :news,
25 :tokens, :journals, :journal_details, :changesets, :trackers,
25 :tokens, :journals, :journal_details, :changesets, :trackers,
26 :issue_statuses, :enumerations, :messages, :boards, :repositories,
26 :issue_statuses, :enumerations, :messages, :boards, :repositories,
27 :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions,
27 :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions,
28 :versions,
28 :versions,
29 :comments
29 :comments
30
30
31 def setup
31 def setup
32 ActionMailer::Base.deliveries.clear
32 ActionMailer::Base.deliveries.clear
33 Setting.host_name = 'mydomain.foo'
33 Setting.host_name = 'mydomain.foo'
34 Setting.protocol = 'http'
34 Setting.protocol = 'http'
35 Setting.plain_text_mail = '0'
35 Setting.plain_text_mail = '0'
36 end
36 end
37
37
38 def test_generated_links_in_emails
38 def test_generated_links_in_emails
39 Setting.host_name = 'mydomain.foo'
39 Setting.host_name = 'mydomain.foo'
40 Setting.protocol = 'https'
40 Setting.protocol = 'https'
41
41
42 journal = Journal.find(2)
42 journal = Journal.find(2)
43 assert Mailer.deliver_issue_edit(journal)
43 assert Mailer.deliver_issue_edit(journal)
44
44
45 mail = ActionMailer::Base.deliveries.last
45 mail = ActionMailer::Base.deliveries.last
46 assert_kind_of TMail::Mail, mail
46 assert_kind_of TMail::Mail, mail
47
47
48 assert_select_email do
48 assert_select_email do
49 # link to the main ticket
49 # link to the main ticket
50 assert_select "a[href=?]",
50 assert_select "a[href=?]",
51 "https://mydomain.foo/issues/1",
51 "https://mydomain.foo/issues/1",
52 :text => "Bug #1: Can't print recipes"
52 :text => "Bug #1: Can't print recipes"
53 # link to a referenced ticket
53 # link to a referenced ticket
54 assert_select "a[href=?][title=?]",
54 assert_select "a[href=?][title=?]",
55 "https://mydomain.foo/issues/2",
55 "https://mydomain.foo/issues/2",
56 "Add ingredients categories (Assigned)",
56 "Add ingredients categories (Assigned)",
57 :text => "#2"
57 :text => "#2"
58 # link to a changeset
58 # link to a changeset
59 assert_select "a[href=?][title=?]",
59 assert_select "a[href=?][title=?]",
60 "https://mydomain.foo/projects/ecookbook/repository/revisions/2",
60 "https://mydomain.foo/projects/ecookbook/repository/revisions/2",
61 "This commit fixes #1, #2 and references #1 &amp; #3",
61 "This commit fixes #1, #2 and references #1 &amp; #3",
62 :text => "r2"
62 :text => "r2"
63 end
63 end
64 end
64 end
65
65
66 def test_generated_links_with_prefix
66 def test_generated_links_with_prefix
67 relative_url_root = Redmine::Utils.relative_url_root
67 relative_url_root = Redmine::Utils.relative_url_root
68 Setting.host_name = 'mydomain.foo/rdm'
68 Setting.host_name = 'mydomain.foo/rdm'
69 Setting.protocol = 'http'
69 Setting.protocol = 'http'
70 Redmine::Utils.relative_url_root = '/rdm'
70 Redmine::Utils.relative_url_root = '/rdm'
71
71
72 journal = Journal.find(2)
72 journal = Journal.find(2)
73 assert Mailer.deliver_issue_edit(journal)
73 assert Mailer.deliver_issue_edit(journal)
74
74
75 mail = ActionMailer::Base.deliveries.last
75 mail = ActionMailer::Base.deliveries.last
76 assert_kind_of TMail::Mail, mail
76 assert_kind_of TMail::Mail, mail
77
77
78 assert_select_email do
78 assert_select_email do
79 # link to the main ticket
79 # link to the main ticket
80 assert_select "a[href=?]",
80 assert_select "a[href=?]",
81 "http://mydomain.foo/rdm/issues/1",
81 "http://mydomain.foo/rdm/issues/1",
82 :text => "Bug #1: Can't print recipes"
82 :text => "Bug #1: Can't print recipes"
83 # link to a referenced ticket
83 # link to a referenced ticket
84 assert_select "a[href=?][title=?]",
84 assert_select "a[href=?][title=?]",
85 "http://mydomain.foo/rdm/issues/2",
85 "http://mydomain.foo/rdm/issues/2",
86 "Add ingredients categories (Assigned)",
86 "Add ingredients categories (Assigned)",
87 :text => "#2"
87 :text => "#2"
88 # link to a changeset
88 # link to a changeset
89 assert_select "a[href=?][title=?]",
89 assert_select "a[href=?][title=?]",
90 "http://mydomain.foo/rdm/projects/ecookbook/repository/revisions/2",
90 "http://mydomain.foo/rdm/projects/ecookbook/repository/revisions/2",
91 "This commit fixes #1, #2 and references #1 &amp; #3",
91 "This commit fixes #1, #2 and references #1 &amp; #3",
92 :text => "r2"
92 :text => "r2"
93 end
93 end
94 ensure
94 ensure
95 # restore it
95 # restore it
96 Redmine::Utils.relative_url_root = relative_url_root
96 Redmine::Utils.relative_url_root = relative_url_root
97 end
97 end
98
98
99 def test_generated_links_with_prefix_and_no_relative_url_root
99 def test_generated_links_with_prefix_and_no_relative_url_root
100 relative_url_root = Redmine::Utils.relative_url_root
100 relative_url_root = Redmine::Utils.relative_url_root
101 Setting.host_name = 'mydomain.foo/rdm'
101 Setting.host_name = 'mydomain.foo/rdm'
102 Setting.protocol = 'http'
102 Setting.protocol = 'http'
103 Redmine::Utils.relative_url_root = nil
103 Redmine::Utils.relative_url_root = nil
104
104
105 journal = Journal.find(2)
105 journal = Journal.find(2)
106 assert Mailer.deliver_issue_edit(journal)
106 assert Mailer.deliver_issue_edit(journal)
107
107
108 mail = ActionMailer::Base.deliveries.last
108 mail = ActionMailer::Base.deliveries.last
109 assert_kind_of TMail::Mail, mail
109 assert_kind_of TMail::Mail, mail
110
110
111 assert_select_email do
111 assert_select_email do
112 # link to the main ticket
112 # link to the main ticket
113 assert_select "a[href=?]", "http://mydomain.foo/rdm/issues/1", :text => "Bug #1: Can't print recipes"
113 assert_select "a[href=?]",
114 "http://mydomain.foo/rdm/issues/1",
115 :text => "Bug #1: Can't print recipes"
114 # link to a referenced ticket
116 # link to a referenced ticket
115 assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/issues/2", "Add ingredients categories (Assigned)", :text => "#2"
117 assert_select "a[href=?][title=?]",
118 "http://mydomain.foo/rdm/issues/2",
119 "Add ingredients categories (Assigned)",
120 :text => "#2"
116 # link to a changeset
121 # link to a changeset
117 assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/projects/ecookbook/repository/revisions/2", "This commit fixes #1, #2 and references #1 &amp; #3", :text => "r2"
122 assert_select "a[href=?][title=?]",
123 "http://mydomain.foo/rdm/projects/ecookbook/repository/revisions/2",
124 "This commit fixes #1, #2 and references #1 &amp; #3",
125 :text => "r2"
118 end
126 end
119 ensure
127 ensure
120 # restore it
128 # restore it
121 Redmine::Utils.relative_url_root = relative_url_root
129 Redmine::Utils.relative_url_root = relative_url_root
122 end
130 end
123
131
124 def test_email_headers
132 def test_email_headers
125 issue = Issue.find(1)
133 issue = Issue.find(1)
126 Mailer.deliver_issue_add(issue)
134 Mailer.deliver_issue_add(issue)
127 mail = ActionMailer::Base.deliveries.last
135 mail = ActionMailer::Base.deliveries.last
128 assert_not_nil mail
136 assert_not_nil mail
129 assert_equal 'bulk', mail.header_string('Precedence')
137 assert_equal 'bulk', mail.header_string('Precedence')
130 assert_equal 'auto-generated', mail.header_string('Auto-Submitted')
138 assert_equal 'auto-generated', mail.header_string('Auto-Submitted')
131 end
139 end
132
140
133 def test_plain_text_mail
141 def test_plain_text_mail
134 Setting.plain_text_mail = 1
142 Setting.plain_text_mail = 1
135 journal = Journal.find(2)
143 journal = Journal.find(2)
136 Mailer.deliver_issue_edit(journal)
144 Mailer.deliver_issue_edit(journal)
137 mail = ActionMailer::Base.deliveries.last
145 mail = ActionMailer::Base.deliveries.last
138 assert_equal "text/plain", mail.content_type
146 assert_equal "text/plain", mail.content_type
139 assert_equal 0, mail.parts.size
147 assert_equal 0, mail.parts.size
140 assert !mail.encoded.include?('href')
148 assert !mail.encoded.include?('href')
141 end
149 end
142
150
143 def test_html_mail
151 def test_html_mail
144 Setting.plain_text_mail = 0
152 Setting.plain_text_mail = 0
145 journal = Journal.find(2)
153 journal = Journal.find(2)
146 Mailer.deliver_issue_edit(journal)
154 Mailer.deliver_issue_edit(journal)
147 mail = ActionMailer::Base.deliveries.last
155 mail = ActionMailer::Base.deliveries.last
148 assert_equal 2, mail.parts.size
156 assert_equal 2, mail.parts.size
149 assert mail.encoded.include?('href')
157 assert mail.encoded.include?('href')
150 end
158 end
151
159
152 def test_mail_from_with_phrase
160 def test_mail_from_with_phrase
153 with_settings :mail_from => 'Redmine app <redmine@example.net>' do
161 with_settings :mail_from => 'Redmine app <redmine@example.net>' do
154 Mailer.deliver_test(User.find(1))
162 Mailer.deliver_test(User.find(1))
155 end
163 end
156 mail = ActionMailer::Base.deliveries.last
164 mail = ActionMailer::Base.deliveries.last
157 assert_not_nil mail
165 assert_not_nil mail
158 assert_equal 'Redmine app', mail.from_addrs.first.name
166 assert_equal 'Redmine app', mail.from_addrs.first.name
159 end
167 end
160
168
161 def test_should_not_send_email_without_recipient
169 def test_should_not_send_email_without_recipient
162 news = News.find(:first)
170 news = News.find(:first)
163 user = news.author
171 user = news.author
164 # Remove members except news author
172 # Remove members except news author
165 news.project.memberships.each {|m| m.destroy unless m.user == user}
173 news.project.memberships.each {|m| m.destroy unless m.user == user}
166
174
167 user.pref[:no_self_notified] = false
175 user.pref[:no_self_notified] = false
168 user.pref.save
176 user.pref.save
169 User.current = user
177 User.current = user
170 Mailer.deliver_news_added(news.reload)
178 Mailer.deliver_news_added(news.reload)
171 assert_equal 1, last_email.bcc.size
179 assert_equal 1, last_email.bcc.size
172
180
173 # nobody to notify
181 # nobody to notify
174 user.pref[:no_self_notified] = true
182 user.pref[:no_self_notified] = true
175 user.pref.save
183 user.pref.save
176 User.current = user
184 User.current = user
177 ActionMailer::Base.deliveries.clear
185 ActionMailer::Base.deliveries.clear
178 Mailer.deliver_news_added(news.reload)
186 Mailer.deliver_news_added(news.reload)
179 assert ActionMailer::Base.deliveries.empty?
187 assert ActionMailer::Base.deliveries.empty?
180 end
188 end
181
189
182 def test_issue_add_message_id
190 def test_issue_add_message_id
183 issue = Issue.find(1)
191 issue = Issue.find(1)
184 Mailer.deliver_issue_add(issue)
192 Mailer.deliver_issue_add(issue)
185 mail = ActionMailer::Base.deliveries.last
193 mail = ActionMailer::Base.deliveries.last
186 assert_not_nil mail
194 assert_not_nil mail
187 assert_equal Mailer.message_id_for(issue), mail.message_id
195 assert_equal Mailer.message_id_for(issue), mail.message_id
188 assert_nil mail.references
196 assert_nil mail.references
189 end
197 end
190
198
191 def test_issue_edit_message_id
199 def test_issue_edit_message_id
192 journal = Journal.find(1)
200 journal = Journal.find(1)
193 Mailer.deliver_issue_edit(journal)
201 Mailer.deliver_issue_edit(journal)
194 mail = ActionMailer::Base.deliveries.last
202 mail = ActionMailer::Base.deliveries.last
195 assert_not_nil mail
203 assert_not_nil mail
196 assert_equal Mailer.message_id_for(journal), mail.message_id
204 assert_equal Mailer.message_id_for(journal), mail.message_id
197 assert_equal Mailer.message_id_for(journal.issue), mail.references.first.to_s
205 assert_equal Mailer.message_id_for(journal.issue), mail.references.first.to_s
198 end
206 end
199
207
200 def test_message_posted_message_id
208 def test_message_posted_message_id
201 message = Message.find(1)
209 message = Message.find(1)
202 Mailer.deliver_message_posted(message)
210 Mailer.deliver_message_posted(message)
203 mail = ActionMailer::Base.deliveries.last
211 mail = ActionMailer::Base.deliveries.last
204 assert_not_nil mail
212 assert_not_nil mail
205 assert_equal Mailer.message_id_for(message), mail.message_id
213 assert_equal Mailer.message_id_for(message), mail.message_id
206 assert_nil mail.references
214 assert_nil mail.references
207 assert_select_email do
215 assert_select_email do
208 # link to the message
216 # link to the message
209 assert_select "a[href=?]", "http://mydomain.foo/boards/#{message.board.id}/topics/#{message.id}", :text => message.subject
217 assert_select "a[href=?]", "http://mydomain.foo/boards/#{message.board.id}/topics/#{message.id}", :text => message.subject
210 end
218 end
211 end
219 end
212
220
213 def test_reply_posted_message_id
221 def test_reply_posted_message_id
214 message = Message.find(3)
222 message = Message.find(3)
215 Mailer.deliver_message_posted(message)
223 Mailer.deliver_message_posted(message)
216 mail = ActionMailer::Base.deliveries.last
224 mail = ActionMailer::Base.deliveries.last
217 assert_not_nil mail
225 assert_not_nil mail
218 assert_equal Mailer.message_id_for(message), mail.message_id
226 assert_equal Mailer.message_id_for(message), mail.message_id
219 assert_equal Mailer.message_id_for(message.parent), mail.references.first.to_s
227 assert_equal Mailer.message_id_for(message.parent), mail.references.first.to_s
220 assert_select_email do
228 assert_select_email do
221 # link to the reply
229 # link to the reply
222 assert_select "a[href=?]", "http://mydomain.foo/boards/#{message.board.id}/topics/#{message.root.id}?r=#{message.id}#message-#{message.id}", :text => message.subject
230 assert_select "a[href=?]", "http://mydomain.foo/boards/#{message.board.id}/topics/#{message.root.id}?r=#{message.id}#message-#{message.id}", :text => message.subject
223 end
231 end
224 end
232 end
225
233
226 context("#issue_add") do
234 context("#issue_add") do
227 setup do
235 setup do
228 ActionMailer::Base.deliveries.clear
236 ActionMailer::Base.deliveries.clear
229 Setting.bcc_recipients = '1'
237 Setting.bcc_recipients = '1'
230 @issue = Issue.find(1)
238 @issue = Issue.find(1)
231 end
239 end
232
240
233 should "notify project members" do
241 should "notify project members" do
234 assert Mailer.deliver_issue_add(@issue)
242 assert Mailer.deliver_issue_add(@issue)
235 assert last_email.bcc.include?('dlopper@somenet.foo')
243 assert last_email.bcc.include?('dlopper@somenet.foo')
236 end
244 end
237
245
238 should "not notify project members that are not allow to view the issue" do
246 should "not notify project members that are not allow to view the issue" do
239 Role.find(2).remove_permission!(:view_issues)
247 Role.find(2).remove_permission!(:view_issues)
240 assert Mailer.deliver_issue_add(@issue)
248 assert Mailer.deliver_issue_add(@issue)
241 assert !last_email.bcc.include?('dlopper@somenet.foo')
249 assert !last_email.bcc.include?('dlopper@somenet.foo')
242 end
250 end
243
251
244 should "notify issue watchers" do
252 should "notify issue watchers" do
245 user = User.find(9)
253 user = User.find(9)
246 # minimal email notification options
254 # minimal email notification options
247 user.pref[:no_self_notified] = '1'
255 user.pref[:no_self_notified] = '1'
248 user.pref.save
256 user.pref.save
249 user.mail_notification = false
257 user.mail_notification = false
250 user.save
258 user.save
251
259
252 Watcher.create!(:watchable => @issue, :user => user)
260 Watcher.create!(:watchable => @issue, :user => user)
253 assert Mailer.deliver_issue_add(@issue)
261 assert Mailer.deliver_issue_add(@issue)
254 assert last_email.bcc.include?(user.mail)
262 assert last_email.bcc.include?(user.mail)
255 end
263 end
256
264
257 should "not notify watchers not allowed to view the issue" do
265 should "not notify watchers not allowed to view the issue" do
258 user = User.find(9)
266 user = User.find(9)
259 Watcher.create!(:watchable => @issue, :user => user)
267 Watcher.create!(:watchable => @issue, :user => user)
260 Role.non_member.remove_permission!(:view_issues)
268 Role.non_member.remove_permission!(:view_issues)
261 assert Mailer.deliver_issue_add(@issue)
269 assert Mailer.deliver_issue_add(@issue)
262 assert !last_email.bcc.include?(user.mail)
270 assert !last_email.bcc.include?(user.mail)
263 end
271 end
264 end
272 end
265
273
266 # test mailer methods for each language
274 # test mailer methods for each language
267 def test_issue_add
275 def test_issue_add
268 issue = Issue.find(1)
276 issue = Issue.find(1)
269 valid_languages.each do |lang|
277 valid_languages.each do |lang|
270 Setting.default_language = lang.to_s
278 Setting.default_language = lang.to_s
271 assert Mailer.deliver_issue_add(issue)
279 assert Mailer.deliver_issue_add(issue)
272 end
280 end
273 end
281 end
274
282
275 def test_issue_edit
283 def test_issue_edit
276 journal = Journal.find(1)
284 journal = Journal.find(1)
277 valid_languages.each do |lang|
285 valid_languages.each do |lang|
278 Setting.default_language = lang.to_s
286 Setting.default_language = lang.to_s
279 assert Mailer.deliver_issue_edit(journal)
287 assert Mailer.deliver_issue_edit(journal)
280 end
288 end
281 end
289 end
282
290
283 def test_document_added
291 def test_document_added
284 document = Document.find(1)
292 document = Document.find(1)
285 valid_languages.each do |lang|
293 valid_languages.each do |lang|
286 Setting.default_language = lang.to_s
294 Setting.default_language = lang.to_s
287 assert Mailer.deliver_document_added(document)
295 assert Mailer.deliver_document_added(document)
288 end
296 end
289 end
297 end
290
298
291 def test_attachments_added
299 def test_attachments_added
292 attachements = [ Attachment.find_by_container_type('Document') ]
300 attachements = [ Attachment.find_by_container_type('Document') ]
293 valid_languages.each do |lang|
301 valid_languages.each do |lang|
294 Setting.default_language = lang.to_s
302 Setting.default_language = lang.to_s
295 assert Mailer.deliver_attachments_added(attachements)
303 assert Mailer.deliver_attachments_added(attachements)
296 end
304 end
297 end
305 end
298
306
299 def test_version_file_added
307 def test_version_file_added
300 attachements = [ Attachment.find_by_container_type('Version') ]
308 attachements = [ Attachment.find_by_container_type('Version') ]
301 assert Mailer.deliver_attachments_added(attachements)
309 assert Mailer.deliver_attachments_added(attachements)
302 assert_not_nil last_email.bcc
310 assert_not_nil last_email.bcc
303 assert last_email.bcc.any?
311 assert last_email.bcc.any?
304 assert_select_email do
312 assert_select_email do
305 assert_select "a[href=?]", "http://mydomain.foo/projects/ecookbook/files"
313 assert_select "a[href=?]", "http://mydomain.foo/projects/ecookbook/files"
306 end
314 end
307 end
315 end
308
316
309 def test_project_file_added
317 def test_project_file_added
310 attachements = [ Attachment.find_by_container_type('Project') ]
318 attachements = [ Attachment.find_by_container_type('Project') ]
311 assert Mailer.deliver_attachments_added(attachements)
319 assert Mailer.deliver_attachments_added(attachements)
312 assert_not_nil last_email.bcc
320 assert_not_nil last_email.bcc
313 assert last_email.bcc.any?
321 assert last_email.bcc.any?
314 assert_select_email do
322 assert_select_email do
315 assert_select "a[href=?]", "http://mydomain.foo/projects/ecookbook/files"
323 assert_select "a[href=?]", "http://mydomain.foo/projects/ecookbook/files"
316 end
324 end
317 end
325 end
318
326
319 def test_news_added
327 def test_news_added
320 news = News.find(:first)
328 news = News.find(:first)
321 valid_languages.each do |lang|
329 valid_languages.each do |lang|
322 Setting.default_language = lang.to_s
330 Setting.default_language = lang.to_s
323 assert Mailer.deliver_news_added(news)
331 assert Mailer.deliver_news_added(news)
324 end
332 end
325 end
333 end
326
334
327 def test_news_comment_added
335 def test_news_comment_added
328 comment = Comment.find(2)
336 comment = Comment.find(2)
329 valid_languages.each do |lang|
337 valid_languages.each do |lang|
330 Setting.default_language = lang.to_s
338 Setting.default_language = lang.to_s
331 assert Mailer.deliver_news_comment_added(comment)
339 assert Mailer.deliver_news_comment_added(comment)
332 end
340 end
333 end
341 end
334
342
335 def test_message_posted
343 def test_message_posted
336 message = Message.find(:first)
344 message = Message.find(:first)
337 recipients = ([message.root] + message.root.children).collect {|m| m.author.mail if m.author}
345 recipients = ([message.root] + message.root.children).collect {|m| m.author.mail if m.author}
338 recipients = recipients.compact.uniq
346 recipients = recipients.compact.uniq
339 valid_languages.each do |lang|
347 valid_languages.each do |lang|
340 Setting.default_language = lang.to_s
348 Setting.default_language = lang.to_s
341 assert Mailer.deliver_message_posted(message)
349 assert Mailer.deliver_message_posted(message)
342 end
350 end
343 end
351 end
344
352
345 def test_wiki_content_added
353 def test_wiki_content_added
346 content = WikiContent.find(:first)
354 content = WikiContent.find(:first)
347 valid_languages.each do |lang|
355 valid_languages.each do |lang|
348 Setting.default_language = lang.to_s
356 Setting.default_language = lang.to_s
349 assert_difference 'ActionMailer::Base.deliveries.size' do
357 assert_difference 'ActionMailer::Base.deliveries.size' do
350 assert Mailer.deliver_wiki_content_added(content)
358 assert Mailer.deliver_wiki_content_added(content)
351 end
359 end
352 end
360 end
353 end
361 end
354
362
355 def test_wiki_content_updated
363 def test_wiki_content_updated
356 content = WikiContent.find(:first)
364 content = WikiContent.find(:first)
357 valid_languages.each do |lang|
365 valid_languages.each do |lang|
358 Setting.default_language = lang.to_s
366 Setting.default_language = lang.to_s
359 assert_difference 'ActionMailer::Base.deliveries.size' do
367 assert_difference 'ActionMailer::Base.deliveries.size' do
360 assert Mailer.deliver_wiki_content_updated(content)
368 assert Mailer.deliver_wiki_content_updated(content)
361 end
369 end
362 end
370 end
363 end
371 end
364
372
365 def test_account_information
373 def test_account_information
366 user = User.find(2)
374 user = User.find(2)
367 valid_languages.each do |lang|
375 valid_languages.each do |lang|
368 user.update_attribute :language, lang.to_s
376 user.update_attribute :language, lang.to_s
369 user.reload
377 user.reload
370 assert Mailer.deliver_account_information(user, 'pAsswORd')
378 assert Mailer.deliver_account_information(user, 'pAsswORd')
371 end
379 end
372 end
380 end
373
381
374 def test_lost_password
382 def test_lost_password
375 token = Token.find(2)
383 token = Token.find(2)
376 valid_languages.each do |lang|
384 valid_languages.each do |lang|
377 token.user.update_attribute :language, lang.to_s
385 token.user.update_attribute :language, lang.to_s
378 token.reload
386 token.reload
379 assert Mailer.deliver_lost_password(token)
387 assert Mailer.deliver_lost_password(token)
380 end
388 end
381 end
389 end
382
390
383 def test_register
391 def test_register
384 token = Token.find(1)
392 token = Token.find(1)
385 Setting.host_name = 'redmine.foo'
393 Setting.host_name = 'redmine.foo'
386 Setting.protocol = 'https'
394 Setting.protocol = 'https'
387
395
388 valid_languages.each do |lang|
396 valid_languages.each do |lang|
389 token.user.update_attribute :language, lang.to_s
397 token.user.update_attribute :language, lang.to_s
390 token.reload
398 token.reload
391 ActionMailer::Base.deliveries.clear
399 ActionMailer::Base.deliveries.clear
392 assert Mailer.deliver_register(token)
400 assert Mailer.deliver_register(token)
393 mail = ActionMailer::Base.deliveries.last
401 mail = ActionMailer::Base.deliveries.last
394 assert mail.body.include?("https://redmine.foo/account/activate?token=#{token.value}")
402 assert mail.body.include?("https://redmine.foo/account/activate?token=#{token.value}")
395 end
403 end
396 end
404 end
397
405
398 def test_test
406 def test_test
399 user = User.find(1)
407 user = User.find(1)
400 valid_languages.each do |lang|
408 valid_languages.each do |lang|
401 user.update_attribute :language, lang.to_s
409 user.update_attribute :language, lang.to_s
402 assert Mailer.deliver_test(user)
410 assert Mailer.deliver_test(user)
403 end
411 end
404 end
412 end
405
413
406 def test_reminders
414 def test_reminders
407 Mailer.reminders(:days => 42)
415 Mailer.reminders(:days => 42)
408 assert_equal 1, ActionMailer::Base.deliveries.size
416 assert_equal 1, ActionMailer::Base.deliveries.size
409 mail = ActionMailer::Base.deliveries.last
417 mail = ActionMailer::Base.deliveries.last
410 assert mail.bcc.include?('dlopper@somenet.foo')
418 assert mail.bcc.include?('dlopper@somenet.foo')
411 assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
419 assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
412 assert_equal '1 issue(s) due in the next 42 days', mail.subject
420 assert_equal '1 issue(s) due in the next 42 days', mail.subject
413 end
421 end
414
422
415 def test_reminders_for_users
423 def test_reminders_for_users
416 Mailer.reminders(:days => 42, :users => ['5'])
424 Mailer.reminders(:days => 42, :users => ['5'])
417 assert_equal 0, ActionMailer::Base.deliveries.size # No mail for dlopper
425 assert_equal 0, ActionMailer::Base.deliveries.size # No mail for dlopper
418 Mailer.reminders(:days => 42, :users => ['3'])
426 Mailer.reminders(:days => 42, :users => ['3'])
419 assert_equal 1, ActionMailer::Base.deliveries.size # No mail for dlopper
427 assert_equal 1, ActionMailer::Base.deliveries.size # No mail for dlopper
420 mail = ActionMailer::Base.deliveries.last
428 mail = ActionMailer::Base.deliveries.last
421 assert mail.bcc.include?('dlopper@somenet.foo')
429 assert mail.bcc.include?('dlopper@somenet.foo')
422 assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
430 assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
423 end
431 end
424
432
425 def last_email
433 def last_email
426 mail = ActionMailer::Base.deliveries.last
434 mail = ActionMailer::Base.deliveries.last
427 assert_not_nil mail
435 assert_not_nil mail
428 mail
436 mail
429 end
437 end
430
438
431 def test_mailer_should_not_change_locale
439 def test_mailer_should_not_change_locale
432 Setting.default_language = 'en'
440 Setting.default_language = 'en'
433 # Set current language to italian
441 # Set current language to italian
434 set_language_if_valid 'it'
442 set_language_if_valid 'it'
435 # Send an email to a french user
443 # Send an email to a french user
436 user = User.find(1)
444 user = User.find(1)
437 user.language = 'fr'
445 user.language = 'fr'
438 Mailer.deliver_account_activated(user)
446 Mailer.deliver_account_activated(user)
439 mail = ActionMailer::Base.deliveries.last
447 mail = ActionMailer::Base.deliveries.last
440 assert mail.body.include?('Votre compte')
448 assert mail.body.include?('Votre compte')
441
449
442 assert_equal :it, current_language
450 assert_equal :it, current_language
443 end
451 end
444
452
445 def test_with_deliveries_off
453 def test_with_deliveries_off
446 Mailer.with_deliveries false do
454 Mailer.with_deliveries false do
447 Mailer.deliver_test(User.find(1))
455 Mailer.deliver_test(User.find(1))
448 end
456 end
449 assert ActionMailer::Base.deliveries.empty?
457 assert ActionMailer::Base.deliveries.empty?
450 # should restore perform_deliveries
458 # should restore perform_deliveries
451 assert ActionMailer::Base.perform_deliveries
459 assert ActionMailer::Base.perform_deliveries
452 end
460 end
453
461
454 context "layout" do
462 context "layout" do
455 should "include the emails_header" do
463 should "include the emails_header" do
456 with_settings(:emails_header => "*Header content*") do
464 with_settings(:emails_header => "*Header content*") do
457 assert Mailer.deliver_test(User.find(1))
465 assert Mailer.deliver_test(User.find(1))
458
466
459 assert_select_email do
467 assert_select_email do
460 assert_select ".header" do
468 assert_select ".header" do
461 assert_select "strong", :text => "Header content"
469 assert_select "strong", :text => "Header content"
462 end
470 end
463 end
471 end
464 end
472 end
465 end
473 end
466 end
474 end
467 end
475 end
General Comments 0
You need to be logged in to leave comments. Login now