]> cat aescling's git repositories - mastodon.git/commitdiff
Add specs for current Status#permitted? implementation (#2982)
authorJack Jennings <jack@standard-library.com>
Thu, 11 May 2017 09:25:10 +0000 (02:25 -0700)
committerEugen Rochko <eugen@zeonfederated.com>
Thu, 11 May 2017 09:25:10 +0000 (11:25 +0200)
spec/models/status_spec.rb

index 721951030ed4af675cdb8aa3b1721a09af4edbe3..f5c65f5c99a157537bb576f598a8a6016952fded 100644 (file)
@@ -120,7 +120,63 @@ RSpec.describe Status, type: :model do
   end
 
   describe '#permitted?' do
-    pending
+    it 'returns true when direct and account is viewer' do
+      subject.visibility = :direct
+      expect(subject.permitted?(subject.account)).to be true
+    end
+
+    it 'returns true when direct and viewer is mentioned' do
+      subject.visibility = :direct
+      subject.mentions = [Fabricate(:mention, account: alice)]
+
+      expect(subject.permitted?(alice)).to be true
+    end
+
+    it 'returns false when direct and viewer is not mentioned' do
+      viewer = Fabricate(:account)
+      subject.visibility = :direct
+
+      expect(subject.permitted?(viewer)).to be false
+    end
+
+    it 'returns true when private and account is viewer' do
+      subject.visibility = :direct
+      expect(subject.permitted?(subject.account)).to be true
+    end
+
+    it 'returns true when private and account is following viewer' do
+      follow = Fabricate(:follow)
+      subject.visibility = :private
+      subject.account = follow.target_account
+
+      expect(subject.permitted?(follow.account)).to be true
+    end
+
+    it 'returns true when private and viewer is mentioned' do
+      subject.visibility = :private
+      subject.mentions = [Fabricate(:mention, account: alice)]
+
+      expect(subject.permitted?(alice)).to be true
+    end
+
+    it 'returns false when private and viewer is not mentioned or followed' do
+      viewer = Fabricate(:account)
+      subject.visibility = :private
+
+      expect(subject.permitted?(viewer)).to be false
+    end
+
+    it 'returns true when no viewer' do
+      expect(subject.permitted?).to be true
+    end
+
+    it 'returns false when viewer is blocked' do
+      block = Fabricate(:block)
+      subject.visibility = :private
+      subject.account = block.target_account
+
+      expect(subject.permitted?(block.account)).to be false
+    end
   end
 
   describe '#filter_from_context?' do