commit: 0de82dd316839ed329504bfbf9bd0f2d3d96e654
parent: dcfc9b220462533c8bcdebc7ca25a68fa23aaf5f
Author: Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp>
Date: Sat, 23 Sep 2017 02:33:17 +0900
Do not filter statuses with unknown languages (#5045)
Diffstat:
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/app/models/status.rb b/app/models/status.rb
@@ -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)
diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb
@@ -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) }