]> cat aescling's git repositories - mastodon.git/commitdiff
Do not filter statuses with unknown languages (#5045)
authorAkihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp>
Fri, 22 Sep 2017 17:33:17 +0000 (02:33 +0900)
committerEugen Rochko <eugen@zeonfederated.com>
Fri, 22 Sep 2017 17:33:17 +0000 (19:33 +0200)
app/models/status.rb
spec/models/status_spec.rb

index 326d128d6dbbad428bad43caa26f449cbc7685a0..ca261a201616dffdc884debce2a7c044fa239f31 100644 (file)
@@ -146,7 +146,7 @@ class Status < ApplicationRecord
 
   class << self
     def not_in_filtered_languages(account)
-      where.not(language: account.filtered_languages)
+      where(language: nil).or where.not(language: account.filtered_languages)
     end
 
     def as_home_timeline(account)
index 12efcae617315e8f499ac894971639d62d45650c..9cb71d715dba04b8b89bc343610f65e8f358451e 100644 (file)
@@ -173,6 +173,22 @@ RSpec.describe Status, type: :model do
     end
   end
 
+  describe '.not_in_filtered_languages' do
+    context 'for accounts with language filters' do
+      let(:user) { Fabricate(:user, filtered_languages: ['en']) }
+
+      it 'does not include statuses in filtered languages' do
+        status = Fabricate(:status, language: 'en')
+        expect(Status.not_in_filtered_languages(user.account)).not_to include status
+      end
+
+      it 'includes status with unknown language' do
+        status = Fabricate(:status, language: nil)
+        expect(Status.not_in_filtered_languages(user.account)).to include status
+      end
+    end
+  end
+
   describe '.as_home_timeline' do
     let(:account) { Fabricate(:account) }
     let(:followed) { Fabricate(:account) }