Make AbuseReportMailer responsible for knowing if it should deliver
This commit is contained in:
parent
0e60282e36
commit
01248d2051
|
@ -2,11 +2,19 @@ class AbuseReportMailer < BaseMailer
|
||||||
include Gitlab::CurrentSettings
|
include Gitlab::CurrentSettings
|
||||||
|
|
||||||
def notify(abuse_report_id)
|
def notify(abuse_report_id)
|
||||||
|
return unless deliverable?
|
||||||
|
|
||||||
@abuse_report = AbuseReport.find(abuse_report_id)
|
@abuse_report = AbuseReport.find(abuse_report_id)
|
||||||
|
|
||||||
mail(
|
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"
|
subject: "#{@abuse_report.user.name} (#{@abuse_report.user.username}) was reported for abuse"
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def deliverable?
|
||||||
|
current_application_settings.admin_notification_email.present?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -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 New Issue