about summary refs log tree commit diff
path: root/spec/models
diff options
context:
space:
mode:
authorMatt Jankowski <mjankowski@thoughtbot.com>2017-05-01 11:42:13 -0400
committerEugen Rochko <eugen@zeonfederated.com>2017-05-01 17:42:13 +0200
commitf025cc67827a5b1b1faf10dec9d5a1e14e67fa5f (patch)
tree8c077d9b08ebbe4088490c5f55e7a5ec806e1176 /spec/models
parent3988f2dade8a75cb642db8c239097bfcf8943a0d (diff)
Filter on allowed user language preferences (#2361)
* Naive approached to timeline filtering

* Convert allowed_languages into a db column

* Allow users to choose languages to see statuses in

* Style list items as two columns

* Add a hint to explain language filtering preference
Diffstat (limited to 'spec/models')
-rw-r--r--spec/models/status_spec.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb
index c553b052e..0c0b16829 100644
--- a/spec/models/status_spec.rb
+++ b/spec/models/status_spec.rb
@@ -251,6 +251,31 @@ RSpec.describe Status, type: :model do
         expect(results).not_to include(muted_status)
       end
 
+      context 'with language preferences' do
+        it 'excludes statuses in languages not allowed by the account user' do
+          user = Fabricate(:user, allowed_languages: [:en, :es])
+          @account.update(user: user)
+          en_status = Fabricate(:status, language: 'en')
+          es_status = Fabricate(:status, language: 'es')
+          fr_status = Fabricate(:status, language: 'fr')
+
+          results = Status.as_public_timeline(@account)
+          expect(results).to include(en_status)
+          expect(results).to include(es_status)
+          expect(results).not_to include(fr_status)
+        end
+
+        it 'includes all languages when account does not have a user' do
+          expect(@account.user).to be_nil
+          en_status = Fabricate(:status, language: 'en')
+          es_status = Fabricate(:status, language: 'es')
+
+          results = Status.as_public_timeline(@account)
+          expect(results).to include(en_status)
+          expect(results).to include(es_status)
+        end
+      end
+
       context 'where that account is silenced' do
         it 'includes statuses from other accounts that are silenced' do
           @account.update(silenced: true)