Add specs for current Status#permitted? implementation (#2982)
This commit is contained in:
		
				
					committed by
					
						
						Eugen Rochko
					
				
			
			
				
	
			
			
			
						parent
						
							b913746752
						
					
				
				
					commit
					2d000e9c4e
				
			@@ -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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user