From af706583bde6efba4c03922d518e0af1d652d8c5 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 15 May 2017 21:20:55 +0200 Subject: [PATCH] Fix change of status callbacks not setting in_reply_to_account_id and (#3072) possibly others when expected. Add some tests for it --- app/models/status.rb | 8 ++++---- spec/services/process_feed_service_spec.rb | 10 ++++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/models/status.rb b/app/models/status.rb index 7c39a273..626f008a 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -72,7 +72,7 @@ class Status < ApplicationRecord cache_associated :account, :application, :media_attachments, :tags, :stream_entry, mentions: :account, reblog: [:account, :application, :stream_entry, :tags, :media_attachments, mentions: :account], thread: :account def reply? - !in_reply_to_id.nil? || super + !in_reply_to_id.nil? || attributes['reply'] end def local? @@ -144,9 +144,9 @@ class Status < ApplicationRecord end before_validation :prepare_contents - before_create :set_reblog - before_create :set_visibility - before_create :set_conversation + before_validation :set_reblog + before_validation :set_visibility + before_validation :set_conversation class << self def in_allowed_languages(account) diff --git a/spec/services/process_feed_service_spec.rb b/spec/services/process_feed_service_spec.rb index f16dda4d..9ac22cbb 100644 --- a/spec/services/process_feed_service_spec.rb +++ b/spec/services/process_feed_service_spec.rb @@ -31,6 +31,16 @@ RSpec.describe ProcessFeedService do expect(Status.find_by(uri: 'tag:kickass.zone,2016-10-10:objectId=2:objectType=Status')).to_not be_nil end + it 'marks replies as replies' do + status = Status.find_by(uri: 'tag:kickass.zone,2016-10-10:objectId=2:objectType=Status') + expect(status.reply?).to be true + end + + it 'sets account being replied to when possible' do + status = Status.find_by(uri: 'tag:kickass.zone,2016-10-10:objectId=2:objectType=Status') + expect(status.in_reply_to_account_id).to eq status.account_id + end + it 'ignores delete statuses unless they existed before' do expect(Status.find_by(uri: 'tag:kickass.zone,2016-10-10:objectId=3:objectType=Status')).to be_nil expect(Status.find_by(uri: 'tag:kickass.zone,2016-10-10:objectId=12:objectType=Status')).to be_nil