]> cat aescling's git repositories - mastodon.git/commitdiff
Fix regression from #3490 - filter out hidden statuses from ancestors/descendants...
authorEugen Rochko <eugen@zeonfederated.com>
Thu, 15 Jun 2017 00:00:08 +0000 (02:00 +0200)
committerGitHub <noreply@github.com>
Thu, 15 Jun 2017 00:00:08 +0000 (02:00 +0200)
app/lib/status_filter.rb
spec/lib/status_filter_spec.rb

index 89d45d442bbeb33aa79272febfc4d0dcfd45a6f6..27e1f9d30fc7ab344681c7b573f9aa28a7e30ac0 100644 (file)
@@ -9,7 +9,7 @@ class StatusFilter
   end
 
   def filtered?
-    account_present? && filtered_status?
+    blocked_by_policy? || (account_present? && filtered_status?) || silenced_account?
   end
 
   private
@@ -19,7 +19,7 @@ class StatusFilter
   end
 
   def filtered_status?
-    blocking_account? || blocking_domain? || muting_account? || silenced_account? || blocked_by_policy?
+    blocking_account? || blocking_domain? || muting_account?
   end
 
   def blocking_account?
@@ -43,7 +43,7 @@ class StatusFilter
   end
 
   def account_following_status_account?
-    account.following? status.account_id
+    account&.following? status.account_id
   end
 
   def blocked_by_policy?
index 07f217fc392a04817ec73f742ab5a2d127a3b3fa..db2d87de204d7c5f2ca276b78dffa621b75ad011 100644 (file)
@@ -9,7 +9,25 @@ describe StatusFilter do
     context 'without an account' do
       subject { described_class.new(status, nil) }
 
-      it { is_expected.not_to be_filtered }
+      context 'when there are no connections' do
+        it { is_expected.not_to be_filtered }
+      end
+
+      context 'when status account is silenced' do
+        before do
+          status.account.update(silenced: true)
+        end
+
+        it { is_expected.to be_filtered }
+      end
+
+      context 'when status policy does not allow show' do
+        before do
+          expect_any_instance_of(StatusPolicy).to receive(:show?).and_return(false)
+        end
+
+        it { is_expected.to be_filtered }
+      end
     end
 
     context 'with real account' do