Make AbuseReportMailer responsible for knowing if it should deliver
This commit is contained in:
parent
0e60282e36
commit
01248d2051
2 changed files with 47 additions and 1 deletions
|
@ -2,11 +2,19 @@ class AbuseReportMailer < BaseMailer
|
|||
include Gitlab::CurrentSettings
|
||||
|
||||
def notify(abuse_report_id)
|
||||
return unless deliverable?
|
||||
|
||||
@abuse_report = AbuseReport.find(abuse_report_id)
|
||||
|
||||
mail(
|
||||
to: current_application_settings.admin_notification_email,
|
||||
to: current_application_settings.admin_notification_email,
|
||||
subject: "#{@abuse_report.user.name} (#{@abuse_report.user.username}) was reported for abuse"
|
||||
)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def deliverable?
|
||||
current_application_settings.admin_notification_email.present?
|
||||
end
|
||||
end
|
||||
|
|
38
spec/mailers/abuse_report_mailer_spec.rb
Normal file
38
spec/mailers/abuse_report_mailer_spec.rb
Normal file
|
@ -0,0 +1,38 @@
|
|||
require 'rails_helper'
|
||||
|
||||
describe AbuseReportMailer do
|
||||
include EmailSpec::Matchers
|
||||
|
||||
describe '.notify' do
|
||||
context 'with admin_notification_email set' do
|
||||
before do
|
||||
stub_application_setting(admin_notification_email: 'admin@example.com')
|
||||
end
|
||||
|
||||
it 'sends to the admin_notification_email' do
|
||||
report = create(:abuse_report)
|
||||
|
||||
mail = described_class.notify(report.id)
|
||||
|
||||
expect(mail).to deliver_to 'admin@example.com'
|
||||
end
|
||||
|
||||
it 'includes the user in the subject' do
|
||||
report = create(:abuse_report)
|
||||
|
||||
mail = described_class.notify(report.id)
|
||||
|
||||
expect(mail).to have_subject "#{report.user.name} (#{report.user.username}) was reported for abuse"
|
||||
end
|
||||
end
|
||||
|
||||
context 'with no admin_notification_email set' do
|
||||
it 'returns early' do
|
||||
stub_application_setting(admin_notification_email: nil)
|
||||
|
||||
expect { described_class.notify(spy).deliver_now }.
|
||||
not_to change { ActionMailer::Base.deliveries.count }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue