diff --git a/app/services/process_references_service.rb b/app/services/process_references_service.rb index ba9dc33285..40405c6ee7 100644 --- a/app/services/process_references_service.rb +++ b/app/services/process_references_service.rb @@ -116,7 +116,7 @@ class ProcessReferencesService < BaseService end def quotable?(target_status) - @status.account.allow_quote? && (!@status.local? || StatusPolicy.new(@status.account, target_status).quote?) + target_status.account.allow_quote? && (!@status.local? || StatusPolicy.new(@status.account, target_status).quote?) end def add_references diff --git a/spec/services/process_references_service_spec.rb b/spec/services/process_references_service_spec.rb index 60857278ee..8d69e42e5a 100644 --- a/spec/services/process_references_service_spec.rb +++ b/spec/services/process_references_service_spec.rb @@ -11,6 +11,7 @@ RSpec.describe ProcessReferencesService, type: :service do let(:target_status) { Fabricate(:status, account: Fabricate(:user).account, visibility: target_status_visibility) } let(:target_status_uri) { ActivityPub::TagManager.instance.uri_for(target_status) } let(:quote_urls) { nil } + let(:allow_quote) { true } def notify?(target_status_id = nil) target_status_id ||= target_status.id @@ -19,6 +20,9 @@ RSpec.describe ProcessReferencesService, type: :service do describe 'posting new status' do subject do + target_status.account.user.settings('allow_quote', false) unless allow_quote + target_status.account.user&.save + described_class.new.call(status, reference_parameters, urls: urls, fetch_remote: fetch_remote, quote_urls: quote_urls) status.reference_objects.pluck(:target_status_id, :attribute_type) end @@ -133,6 +137,19 @@ RSpec.describe ProcessReferencesService, type: :service do end end + context 'when quote is rejected' do + let(:text) { "Hello QT #{target_status_uri}" } + let(:allow_quote) { false } + + it 'post status' do + expect(subject.size).to eq 1 + expect(subject.pluck(0)).to include target_status.id + expect(subject.pluck(1)).to include 'BT' + expect(status.quote).to be_nil + expect(notify?).to be true + end + end + context 'with quote and reference' do let(:target_status2) { Fabricate(:status) } let(:target_status2_uri) { ActivityPub::TagManager.instance.uri_for(target_status2) }