diff options
Diffstat (limited to 'spec/mailers/emails')
-rw-r--r-- | spec/mailers/emails/merge_requests_spec.rb | 3 | ||||
-rw-r--r-- | spec/mailers/emails/projects_spec.rb | 36 | ||||
-rw-r--r-- | spec/mailers/emails/service_desk_spec.rb | 19 |
3 files changed, 47 insertions, 11 deletions
diff --git a/spec/mailers/emails/merge_requests_spec.rb b/spec/mailers/emails/merge_requests_spec.rb index 9235a946394..412cdff3aba 100644 --- a/spec/mailers/emails/merge_requests_spec.rb +++ b/spec/mailers/emails/merge_requests_spec.rb @@ -52,7 +52,8 @@ RSpec.describe Emails::MergeRequests do it { expect(subject.subject).to eq("#{project.name} | Exported merge requests") } it { expect(subject.to).to contain_exactly(user.notification_email_for(project.group)) } - it { expect(subject).to have_content('Your CSV export of 10 merge requests from project')} + it { expect(subject.html_part).to have_content("Your CSV export of 10 merge requests from project") } + it { expect(subject.text_part).to have_content("Your CSV export of 10 merge requests from project") } context 'when truncated' do let(:export_status) do diff --git a/spec/mailers/emails/projects_spec.rb b/spec/mailers/emails/projects_spec.rb index aa5947bf68e..6c23625d4a3 100644 --- a/spec/mailers/emails/projects_spec.rb +++ b/spec/mailers/emails/projects_spec.rb @@ -32,19 +32,13 @@ RSpec.describe Emails::Projects do describe '#prometheus_alert_fired_email' do let(:default_title) { Gitlab::AlertManagement::Payload::Generic::DEFAULT_TITLE } let(:payload) { { 'startsAt' => Time.now.rfc3339 } } - let(:alert_attributes) { build(:alert_management_alert, :from_payload, payload: payload, project: project).attributes } + let(:alert) { create(:alert_management_alert, :from_payload, payload: payload, project: project) } subject do - Notify.prometheus_alert_fired_email(project.id, user.id, alert_attributes) + Notify.prometheus_alert_fired_email(project, user, alert) end - context 'missing required attributes' do - let(:alert_attributes) { build(:alert_management_alert, :prometheus, :from_payload, payload: payload, project: project).attributes } - - it_behaves_like 'no email' - end - - context 'with minimum required attributes' do + context 'with empty payload' do let(:payload) { {} } it_behaves_like 'an email sent from GitLab' @@ -58,6 +52,7 @@ RSpec.describe Emails::Projects do it 'has expected content' do is_expected.to have_body_text('An alert has been triggered') is_expected.to have_body_text(project.full_path) + is_expected.to have_body_text(alert.details_url) is_expected.not_to have_body_text('Description:') is_expected.not_to have_body_text('Environment:') is_expected.not_to have_body_text('Metric:') @@ -78,6 +73,7 @@ RSpec.describe Emails::Projects do it 'has expected content' do is_expected.to have_body_text('An alert has been triggered') is_expected.to have_body_text(project.full_path) + is_expected.to have_body_text(alert.details_url) is_expected.to have_body_text('Description:') is_expected.to have_body_text('alert description') is_expected.not_to have_body_text('Environment:') @@ -101,6 +97,7 @@ RSpec.describe Emails::Projects do it 'has expected content' do is_expected.to have_body_text('An alert has been triggered') is_expected.to have_body_text(project.full_path) + is_expected.to have_body_text(alert.details_url) is_expected.to have_body_text('Environment:') is_expected.to have_body_text(environment.name) is_expected.not_to have_body_text('Description:') @@ -112,7 +109,7 @@ RSpec.describe Emails::Projects do let_it_be(:prometheus_alert) { create(:prometheus_alert, project: project) } let_it_be(:environment) { prometheus_alert.environment } - let(:alert_attributes) { build(:alert_management_alert, :prometheus, :from_payload, payload: payload, project: project).attributes } + let(:alert) { create(:alert_management_alert, :prometheus, :from_payload, payload: payload, project: project) } let(:title) { "#{prometheus_alert.title} #{prometheus_alert.computed_operator} #{prometheus_alert.threshold}" } let(:metrics_url) { metrics_project_environment_url(project, environment) } @@ -135,6 +132,7 @@ RSpec.describe Emails::Projects do it 'has expected content' do is_expected.to have_body_text('An alert has been triggered') is_expected.to have_body_text(project.full_path) + is_expected.to have_body_text(alert.details_url) is_expected.to have_body_text('Environment:') is_expected.to have_body_text(environment.name) is_expected.to have_body_text('Metric:') @@ -143,5 +141,23 @@ RSpec.describe Emails::Projects do is_expected.not_to have_body_text('Description:') end end + + context 'resolved' do + let_it_be(:alert) { create(:alert_management_alert, :resolved, project: project) } + + it_behaves_like 'an email sent from GitLab' + it_behaves_like 'it should not have Gmail Actions links' + it_behaves_like 'a user cannot unsubscribe through footer link' + + it 'has expected subject' do + is_expected.to have_subject("#{project.name} | Alert: #{alert.title}") + end + + it 'has expected content' do + is_expected.to have_body_text('An alert has been resolved') + is_expected.to have_body_text(project.full_path) + is_expected.to have_body_text(alert.details_url) + end + end end end diff --git a/spec/mailers/emails/service_desk_spec.rb b/spec/mailers/emails/service_desk_spec.rb index 842f82539cb..7d04b373be6 100644 --- a/spec/mailers/emails/service_desk_spec.rb +++ b/spec/mailers/emails/service_desk_spec.rb @@ -183,6 +183,25 @@ RSpec.describe Emails::ServiceDesk do it_behaves_like 'handle template content', 'new_note' end + + context 'with upload link in the note' do + let_it_be(:upload_path) { '/uploads/e90decf88d8f96fe9e1389afc2e4a91f/test.jpg' } + let_it_be(:note) { create(:note_on_issue, noteable: issue, project: project, note: "a new comment with [file](#{upload_path})") } + + let(:template_content) { 'some text %{ NOTE_TEXT }' } + let(:expected_body) { %Q(some text a new comment with <a href="#{project.web_url}#{upload_path}" data-link="true" class="gfm">file</a>) } + + it_behaves_like 'handle template content', 'new_note' + end + + context 'with all-user reference in a an external author comment' do + let_it_be(:note) { create(:note_on_issue, noteable: issue, project: project, note: "Hey @all, just a ping", author: User.support_bot) } + + let(:template_content) { 'some text %{ NOTE_TEXT }' } + let(:expected_body) { 'Hey , just a ping' } + + it_behaves_like 'handle template content', 'new_note' + end end end end |