From db9aea34dead1b230e44b4235ff8af8100108b7f Mon Sep 17 00:00:00 2001 From: valerauko Date: Mon, 26 Nov 2018 00:35:21 +0900 Subject: [PATCH] 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 --- app/models/status.rb | 2 ++ spec/services/post_status_service_spec.rb | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/app/models/status.rb b/app/models/status.rb index 0449d33e12..2e894a6f10 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -445,6 +445,8 @@ class Status < ApplicationRecord end def set_conversation + self.thread = thread.reblog if thread&.reblog? + self.reply = !(in_reply_to_id.nil? && thread.nil?) unless reply if reply? && !thread.nil? diff --git a/spec/services/post_status_service_spec.rb b/spec/services/post_status_service_spec.rb index 40fa8fbefa..349ad861b9 100644 --- a/spec/services/post_status_service_spec.rb +++ b/spec/services/post_status_service_spec.rb @@ -25,6 +25,19 @@ RSpec.describe PostStatusService, type: :service do expect(status.thread).to eq in_reply_to_status 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 status = create_status_with_options(sensitive: true)