diff options
Diffstat (limited to 'spec/mailers/notify_spec.rb')
-rw-r--r-- | spec/mailers/notify_spec.rb | 112 |
1 files changed, 10 insertions, 102 deletions
diff --git a/spec/mailers/notify_spec.rb b/spec/mailers/notify_spec.rb index 89cf1aaedd2..79358d3e40c 100644 --- a/spec/mailers/notify_spec.rb +++ b/spec/mailers/notify_spec.rb @@ -16,12 +16,14 @@ RSpec.describe Notify do let_it_be(:user, reload: true) { create(:user) } let_it_be(:current_user, reload: true) { create(:user, email: "current@email.com", name: 'www.example.com') } let_it_be(:assignee, reload: true) { create(:user, email: 'assignee@example.com', name: 'John Doe') } + let_it_be(:reviewer, reload: true) { create(:user, email: 'reviewer@example.com', name: 'Jane Doe') } let_it_be(:merge_request) do create(:merge_request, source_project: project, target_project: project, author: current_user, assignees: [assignee], + reviewers: [reviewer], description: 'Awesome description') end @@ -342,6 +344,7 @@ RSpec.describe Notify do is_expected.to have_body_text(project_merge_request_path(project, merge_request)) is_expected.to have_body_text(merge_request.source_branch) is_expected.to have_body_text(merge_request.target_branch) + is_expected.to have_body_text(reviewer.name) end end @@ -362,7 +365,11 @@ RSpec.describe Notify do it 'contains a link to merge request author' do is_expected.to have_body_text merge_request.author_name - is_expected.to have_body_text 'created a merge request:' + is_expected.to have_body_text 'created a' + end + + it 'contains a link to the merge request url' do + is_expected.to have_link('merge request', href: project_merge_request_url(merge_request.target_project, merge_request)) end end @@ -461,106 +468,6 @@ RSpec.describe Notify do end end - describe 'status changed' do - let(:status) { 'reopened' } - - subject { described_class.merge_request_status_email(recipient.id, merge_request.id, status, current_user.id) } - - it_behaves_like 'an answer to an existing thread with reply-by-email enabled' do - let(:model) { merge_request } - end - - it_behaves_like 'it should show Gmail Actions View Merge request link' - it_behaves_like 'an unsubscribeable thread' - it_behaves_like 'appearance header and footer enabled' - it_behaves_like 'appearance header and footer not enabled' - - it 'is sent as the author' do - sender = subject.header[:from].addrs[0] - expect(sender.display_name).to eq(current_user.name) - expect(sender.address).to eq(gitlab_sender) - end - - it 'has the correct subject and body' do - aggregate_failures do - is_expected.to have_referable_subject(merge_request, reply: true) - is_expected.to have_body_text(status) - is_expected.to have_body_text(current_user_sanitized) - is_expected.to have_body_text(project_merge_request_path(project, merge_request)) - is_expected.to have_link(merge_request.to_reference, href: project_merge_request_url(merge_request.target_project, merge_request)) - end - end - end - - describe 'that are merged' do - let(:merge_author) { create(:user) } - - subject { described_class.merged_merge_request_email(recipient.id, merge_request.id, merge_author.id) } - - it_behaves_like 'a multiple recipients email' - it_behaves_like 'an answer to an existing thread with reply-by-email enabled' do - let(:model) { merge_request } - end - - it_behaves_like 'it should show Gmail Actions View Merge request link' - it_behaves_like 'an unsubscribeable thread' - it_behaves_like 'appearance header and footer enabled' - it_behaves_like 'appearance header and footer not enabled' - - it 'is sent as the merge author' do - sender = subject.header[:from].addrs[0] - expect(sender.display_name).to eq(merge_author.name) - expect(sender.address).to eq(gitlab_sender) - end - - it 'has the correct subject and body' do - aggregate_failures do - is_expected.to have_referable_subject(merge_request, reply: true) - is_expected.to have_body_text('merged') - is_expected.to have_body_text(project_merge_request_path(project, merge_request)) - is_expected.to have_link(merge_request.to_reference, href: project_merge_request_url(merge_request.target_project, merge_request)) - end - end - end - - describe 'that are unmergeable' do - let_it_be(:merge_request) do - create(:merge_request, :conflict, - source_project: project, - target_project: project, - author: current_user, - assignees: [assignee], - description: 'Awesome description') - end - - subject { described_class.merge_request_unmergeable_email(recipient.id, merge_request.id) } - - it_behaves_like 'a multiple recipients email' - it_behaves_like 'an answer to an existing thread with reply-by-email enabled' do - let(:model) { merge_request } - end - - it_behaves_like 'it should show Gmail Actions View Merge request link' - it_behaves_like 'an unsubscribeable thread' - it_behaves_like 'appearance header and footer enabled' - it_behaves_like 'appearance header and footer not enabled' - - it 'is sent as the merge request author' do - sender = subject.header[:from].addrs[0] - expect(sender.display_name).to eq(merge_request.author.name) - expect(sender.address).to eq(gitlab_sender) - end - - it 'has the correct subject and body' do - aggregate_failures do - is_expected.to have_referable_subject(merge_request, reply: true) - is_expected.to have_body_text(project_merge_request_path(project, merge_request)) - is_expected.to have_body_text('due to conflict.') - is_expected.to have_link(merge_request.to_reference, href: project_merge_request_url(merge_request.target_project, merge_request)) - end - end - end - shared_examples 'a push to an existing merge request' do let(:push_user) { create(:user) } @@ -1311,6 +1218,7 @@ RSpec.describe Notify do context 'for service desk issues' do before do issue.update!(external_author: 'service.desk@example.com') + issue.issue_email_participants.create!(email: 'service.desk@example.com') end def expect_sender(username) @@ -1359,7 +1267,7 @@ RSpec.describe Notify do describe 'new note email' do let_it_be(:first_note) { create(:discussion_note_on_issue, note: 'Hello world') } - subject { described_class.service_desk_new_note_email(issue.id, first_note.id) } + subject { described_class.service_desk_new_note_email(issue.id, first_note.id, 'service.desk@example.com') } it_behaves_like 'an unsubscribeable thread' |