about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--app/models/status.rb8
-rw-r--r--spec/services/process_feed_service_spec.rb10
2 files changed, 14 insertions, 4 deletions
diff --git a/app/models/status.rb b/app/models/status.rb
index 7c39a273a..626f008ad 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 f16dda4d4..9ac22cbba 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