Change: #576 公開範囲「公開」を禁止する設定について、ブーストにも適用されるように (#580)

This commit is contained in:
KMY(雪あすか) 2024-02-17 12:32:48 +09:00 committed by GitHub
parent e5ab4a3eb2
commit 80be9b38a0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 38 additions and 1 deletions

View file

@ -25,7 +25,10 @@ class ReblogService < BaseService
else else
options[:visibility] || options[:visibility] ||
(account.user&.setting_default_reblog_privacy == 'unset' ? account.user&.setting_default_privacy : account.user&.setting_default_reblog_privacy) (account.user&.setting_default_reblog_privacy == 'unset' ? account.user&.setting_default_privacy : account.user&.setting_default_reblog_privacy)
end end.to_s
visibility = 'public_unlisted' if !Setting.enable_public_visibility && visibility == 'public'
visibility = 'unlisted' if !Setting.enable_public_unlisted_visibility && visibility == 'public_unlisted'
reblog = account.statuses.create!(reblog: reblogged_status, text: '', visibility: visibility, rate_limit: options[:with_rate_limit]) reblog = account.statuses.create!(reblog: reblogged_status, text: '', visibility: visibility, rate_limit: options[:with_rate_limit])

View file

@ -16,6 +16,10 @@ RSpec.describe ReblogService, type: :service do
subject.call(alice, status, visibility: reblog_visibility) subject.call(alice, status, visibility: reblog_visibility)
end end
it 'a simple case reblogs publicly' do
expect(status.reblogs.first.visibility).to eq 'public'
end
describe 'boosting privately' do describe 'boosting privately' do
let(:reblog_visibility) { :private } let(:reblog_visibility) { :private }
@ -34,6 +38,36 @@ RSpec.describe ReblogService, type: :service do
end end
end end
context 'when public visibility is disabled' do
subject { described_class.new }
let(:status) { Fabricate(:status, account: alice, visibility: :public) }
before do
Setting.enable_public_visibility = false
subject.call(alice, status, visibility: :public)
end
it 'reblogs as public unlisted' do
expect(status.reblogs.first.visibility).to eq 'public_unlisted'
end
end
context 'when public unlisted visibility is disabled' do
subject { described_class.new }
let(:status) { Fabricate(:status, account: alice, visibility: :public) }
before do
Setting.enable_public_unlisted_visibility = false
subject.call(alice, status, visibility: :public_unlisted)
end
it 'reblogs as public unlisted' do
expect(status.reblogs.first.visibility).to eq 'unlisted'
end
end
context 'when the reblogged status is discarded in the meantime' do context 'when the reblogged status is discarded in the meantime' do
let(:status) { Fabricate(:status, account: alice, visibility: :public, text: 'discard-status-text') } let(:status) { Fabricate(:status, account: alice, visibility: :public, text: 'discard-status-text') }