Ensure replied-to is a status not a boost (#9129)

* Ensure replied-to is a status not a boost

* Consider case of not a reply

* Add test case for replying to boost

* Move reblog-reply resolution to model

* Remove unnecessary comment
This commit is contained in:
valerauko 2018-11-26 00:35:21 +09:00 committed by Eugen Rochko
parent 180ae0472a
commit db9aea34de
2 changed files with 15 additions and 0 deletions

View File

@ -445,6 +445,8 @@ class Status < ApplicationRecord
end end
def set_conversation def set_conversation
self.thread = thread.reblog if thread&.reblog?
self.reply = !(in_reply_to_id.nil? && thread.nil?) unless reply self.reply = !(in_reply_to_id.nil? && thread.nil?) unless reply
if reply? && !thread.nil? if reply? && !thread.nil?

View File

@ -25,6 +25,19 @@ RSpec.describe PostStatusService, type: :service do
expect(status.thread).to eq in_reply_to_status expect(status.thread).to eq in_reply_to_status
end end
it 'creates response to the original status of boost' do
boosted_status = Fabricate(:status)
in_reply_to_status = Fabricate(:status, reblog: boosted_status)
account = Fabricate(:account)
text = "test status update"
status = subject.call(account, text, in_reply_to_status)
expect(status).to be_persisted
expect(status.text).to eq text
expect(status.thread).to eq boosted_status
end
it 'creates a sensitive status' do it 'creates a sensitive status' do
status = create_status_with_options(sensitive: true) status = create_status_with_options(sensitive: true)