diff --git a/app/models/notification.rb b/app/models/notification.rb index 7e0e62683..7cbab4dc8 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -184,13 +184,13 @@ class Notification < ApplicationRecord return unless new_record? case activity_type - when 'Status', 'Follow', 'Favourite', 'FollowRequest', 'Poll', 'Report', 'AccountWarning' + when 'Status', 'Follow', 'Favourite', 'FollowRequest', 'Poll', 'Report' self.from_account_id = activity&.account_id when 'Mention' self.from_account_id = activity&.status&.account_id when 'Account' self.from_account_id = activity&.id - when 'AccountRelationshipSeveranceEvent' + when 'AccountRelationshipSeveranceEvent', 'AccountWarning' # These do not really have an originating account, but this is mandatory # in the data model, and the recipient's account will by definition # always exist diff --git a/spec/models/notification_spec.rb b/spec/models/notification_spec.rb index 172d1c65b..3c7d51ae1 100644 --- a/spec/models/notification_spec.rb +++ b/spec/models/notification_spec.rb @@ -138,6 +138,17 @@ RSpec.describe Notification do expect(notification.account).to eq(account) end end + + context 'when activity_type is an AccountWarning' do + it 'sets the notification from_account to the recipient of the notification' do + account = Fabricate(:account) + account_warning = Fabricate(:account_warning, target_account: account) + + notification = Fabricate.build(:notification, activity_type: 'AccountWarning', activity: account_warning, account: account) + + expect(notification.from_account).to eq(account) + end + end end describe '.preload_cache_collection_target_statuses' do