diff options
-rw-r--r-- | app/services/notify_service.rb | 4 | ||||
-rw-r--r-- | spec/services/notify_service_spec.rb | 38 |
2 files changed, 40 insertions, 2 deletions
diff --git a/app/services/notify_service.rb b/app/services/notify_service.rb index 00f7cbd00..9c7eb26ef 100644 --- a/app/services/notify_service.rb +++ b/app/services/notify_service.rb @@ -54,10 +54,10 @@ class NotifyService < BaseService end def send_email - NotificationMailer.send(@notification.type, @recipient, @notification).deliver_later + NotificationMailer.public_send(@notification.type, @recipient, @notification).deliver_later end def email_enabled? - @recipient.user.settings.notification_emails[@notification.type] + @recipient.user.settings.notification_emails[@notification.type.to_s] end end diff --git a/spec/services/notify_service_spec.rb b/spec/services/notify_service_spec.rb new file mode 100644 index 000000000..86848e1ff --- /dev/null +++ b/spec/services/notify_service_spec.rb @@ -0,0 +1,38 @@ +require 'rails_helper' + +RSpec.describe NotifyService do + subject do + -> { described_class.new.call(recipient, activity) } + end + + let(:user) { Fabricate(:user) } + let(:recipient) { user.account } + let(:activity) { Fabricate(:follow, target_account: recipient) } + + it { is_expected.to change(Notification, :count).by(1) } + + describe 'email' do + before do + ActionMailer::Base.deliveries.clear + + notification_emails = user.settings.notification_emails + user.settings.notification_emails = notification_emails.merge('follow' => enabled) + end + + context 'when email notification is enabled' do + let(:enabled) { true } + + it 'sends email' do + is_expected.to change(ActionMailer::Base.deliveries, :count).by(1) + end + end + + context 'when email notification is disabled' do + let(:enabled) { false } + + it "doesn't send email" do + is_expected.to_not change(ActionMailer::Base.deliveries, :count).from(0) + end + end + end +end |