|
22 | 22 | end
|
23 | 23 | end
|
24 | 24 |
|
| 25 | + shared_examples 'an email starting a new thread' do |message_id_prefix| |
| 26 | + it 'has a discussion identifier' do |
| 27 | + should have_header 'Message-ID', /<#{message_id_prefix}(.*)@#{Gitlab.config.gitlab.host}>/ |
| 28 | + end |
| 29 | + end |
| 30 | + |
| 31 | + shared_examples 'an answer to an existing thread' do |thread_id_prefix| |
| 32 | + it 'has a subject that begins with Re: ' do |
| 33 | + should have_subject /^Re: / |
| 34 | + end |
| 35 | + |
| 36 | + it 'has headers that reference an existing thread' do |
| 37 | + should have_header 'References', /<#{thread_id_prefix}(.*)@#{Gitlab.config.gitlab.host}>/ |
| 38 | + should have_header 'In-Reply-To', /<#{thread_id_prefix}(.*)@#{Gitlab.config.gitlab.host}>/ |
| 39 | + end |
| 40 | + end |
| 41 | + |
25 | 42 | describe 'for new users, the email' do
|
26 | 43 | let(:example_site_path) { root_path }
|
27 | 44 | let(:new_user) { create(:user, email: '[email protected]', created_by_id: 1) }
|
|
153 | 170 | subject { Notify.new_issue_email(issue.assignee_id, issue.id) }
|
154 | 171 |
|
155 | 172 | it_behaves_like 'an assignee email'
|
| 173 | + it_behaves_like 'an email starting a new thread', 'issue' |
156 | 174 |
|
157 | 175 | it 'has the correct subject' do
|
158 | 176 | should have_subject /#{project.name} \| #{issue.title} \(##{issue.iid}\)/
|
|
161 | 179 | it 'contains a link to the new issue' do
|
162 | 180 | should have_body_text /#{project_issue_path project, issue}/
|
163 | 181 | end
|
164 |
| - |
165 |
| - it 'has the correct message-id set' do |
166 |
| - should have_header 'Message-ID', "<issue_#{issue.id}@#{Gitlab.config.gitlab.host}>" |
167 |
| - end |
168 | 182 | end
|
169 | 183 |
|
170 | 184 | describe 'that are new with a description' do
|
|
179 | 193 | subject { Notify.reassigned_issue_email(recipient.id, issue.id, previous_assignee.id, current_user) }
|
180 | 194 |
|
181 | 195 | it_behaves_like 'a multiple recipients email'
|
| 196 | + it_behaves_like 'an answer to an existing thread', 'issue' |
182 | 197 |
|
183 | 198 | it 'is sent as the author' do
|
184 | 199 | sender = subject.header[:from].addrs[0]
|
|
201 | 216 | it 'contains a link to the issue' do
|
202 | 217 | should have_body_text /#{project_issue_path project, issue}/
|
203 | 218 | end
|
204 |
| - |
205 |
| - it 'has the correct reference set' do |
206 |
| - should have_header 'References', "<issue_#{issue.id}@#{Gitlab.config.gitlab.host}>" |
207 |
| - end |
208 | 219 | end
|
209 | 220 |
|
210 | 221 | describe 'status changed' do
|
211 | 222 | let(:status) { 'closed' }
|
212 | 223 | subject { Notify.issue_status_changed_email(recipient.id, issue.id, status, current_user) }
|
213 | 224 |
|
| 225 | + it_behaves_like 'an answer to an existing thread', 'issue' |
| 226 | + |
214 | 227 | it 'is sent as the author' do
|
215 | 228 | sender = subject.header[:from].addrs[0]
|
216 | 229 | sender.display_name.should eq(current_user.name)
|
|
232 | 245 | it 'contains a link to the issue' do
|
233 | 246 | should have_body_text /#{project_issue_path project, issue}/
|
234 | 247 | end
|
235 |
| - |
236 |
| - it 'has the correct reference set' do |
237 |
| - should have_header 'References', "<issue_#{issue.id}@#{Gitlab.config.gitlab.host}>" |
238 |
| - end |
239 | 248 | end
|
240 | 249 |
|
241 | 250 | end
|
|
249 | 258 | subject { Notify.new_merge_request_email(merge_request.assignee_id, merge_request.id) }
|
250 | 259 |
|
251 | 260 | it_behaves_like 'an assignee email'
|
| 261 | + it_behaves_like 'an email starting a new thread', 'merge_request' |
252 | 262 |
|
253 | 263 | it 'has the correct subject' do
|
254 | 264 | should have_subject /#{merge_request.title} \(##{merge_request.iid}\)/
|
|
283 | 293 | subject { Notify.reassigned_merge_request_email(recipient.id, merge_request.id, previous_assignee.id, current_user.id) }
|
284 | 294 |
|
285 | 295 | it_behaves_like 'a multiple recipients email'
|
| 296 | + it_behaves_like 'an answer to an existing thread', 'merge_request' |
286 | 297 |
|
287 | 298 | it 'is sent as the author' do
|
288 | 299 | sender = subject.header[:from].addrs[0]
|
|
311 | 322 | subject { Notify.merged_merge_request_email(recipient.id, merge_request.id, merge_author.id) }
|
312 | 323 |
|
313 | 324 | it_behaves_like 'a multiple recipients email'
|
| 325 | + it_behaves_like 'an answer to an existing thread', 'merge_request' |
314 | 326 |
|
315 | 327 | it 'is sent as the merge author' do
|
316 | 328 | sender = subject.header[:from].addrs[0]
|
|
329 | 341 | it 'contains a link to the merge request' do
|
330 | 342 | should have_body_text /#{project_merge_request_path project, merge_request}/
|
331 | 343 | end
|
332 |
| - |
333 |
| - it 'has the correct reference set' do |
334 |
| - should have_header 'References', "<merge_request_#{merge_request.id}@#{Gitlab.config.gitlab.host}>" |
335 |
| - end |
336 | 344 | end
|
337 | 345 | end
|
338 | 346 | end
|
|
426 | 434 | subject { Notify.note_commit_email(recipient.id, note.id) }
|
427 | 435 |
|
428 | 436 | it_behaves_like 'a note email'
|
| 437 | + it_behaves_like 'an answer to an existing thread', 'commits' |
429 | 438 |
|
430 | 439 | it 'has the correct subject' do
|
431 | 440 | should have_subject /#{commit.title} \(#{commit.short_id}\)/
|
|
444 | 453 | subject { Notify.note_merge_request_email(recipient.id, note.id) }
|
445 | 454 |
|
446 | 455 | it_behaves_like 'a note email'
|
| 456 | + it_behaves_like 'an answer to an existing thread', 'merge_request' |
447 | 457 |
|
448 | 458 | it 'has the correct subject' do
|
449 | 459 | should have_subject /#{merge_request.title} \(##{merge_request.iid}\)/
|
|
462 | 472 | subject { Notify.note_issue_email(recipient.id, note.id) }
|
463 | 473 |
|
464 | 474 | it_behaves_like 'a note email'
|
| 475 | + it_behaves_like 'an answer to an existing thread', 'issue' |
465 | 476 |
|
466 | 477 | it 'has the correct subject' do
|
467 | 478 | should have_subject /#{issue.title} \(##{issue.iid}\)/
|
|
574 | 585 | end
|
575 | 586 |
|
576 | 587 | it 'is sent to recipient' do
|
577 |
| - should deliver_to '[email protected]' |
| 588 | + |
578 | 589 | end
|
579 | 590 |
|
580 | 591 | it 'has the correct subject' do
|
|
0 commit comments