diff options
author | Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp> | 2017-09-23 02:33:17 +0900 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2017-09-22 19:33:17 +0200 |
commit | 0de82dd316839ed329504bfbf9bd0f2d3d96e654 (patch) | |
tree | f9baedb5c355ccc3ed955851a1eb5605662c4f51 | |
parent | dcfc9b220462533c8bcdebc7ca25a68fa23aaf5f (diff) |
Do not filter statuses with unknown languages (#5045)
-rw-r--r-- | app/models/status.rb | 2 | ||||
-rw-r--r-- | spec/models/status_spec.rb | 16 |
2 files changed, 17 insertions, 1 deletions
diff --git a/app/models/status.rb b/app/models/status.rb index 326d128d6..ca261a201 100644 --- 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 index 12efcae61..9cb71d715 100644 --- 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) } |