Introduce recent to Follow, as Account and other models have. This change also adds specs for the scope and the dependents.
		
			
				
	
	
		
			40 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require 'rails_helper'
 | |
| 
 | |
| RSpec.describe Follow, type: :model do
 | |
|   let(:alice) { Fabricate(:account, username: 'alice') }
 | |
|   let(:bob)   { Fabricate(:account, username: 'bob') }
 | |
| 
 | |
|   describe 'validations' do
 | |
|     subject { Follow.new(account: alice, target_account: bob) }
 | |
| 
 | |
|     it 'has a valid fabricator' do
 | |
|       follow = Fabricate.build(:follow)
 | |
|       expect(follow).to be_valid
 | |
|     end
 | |
| 
 | |
|     it 'is invalid without an account' do
 | |
|       follow = Fabricate.build(:follow, account: nil)
 | |
|       follow.valid?
 | |
|       expect(follow).to model_have_error_on_field(:account)
 | |
|     end
 | |
| 
 | |
|     it 'is invalid without a target_account' do
 | |
|       follow = Fabricate.build(:follow, target_account: nil)
 | |
|       follow.valid?
 | |
|       expect(follow).to model_have_error_on_field(:target_account)
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   describe 'recent' do
 | |
|     it 'sorts so that more recent follows comes earlier' do
 | |
|       follow0 = Follow.create!(account: alice, target_account: bob)
 | |
|       follow1 = Follow.create!(account: bob, target_account: alice)
 | |
| 
 | |
|       a = Follow.recent.to_a
 | |
| 
 | |
|       expect(a.size).to eq 2
 | |
|       expect(a[0]).to eq follow1
 | |
|       expect(a[1]).to eq follow0
 | |
|     end
 | |
|   end
 | |
| end
 |