Add coverage for ListAccount follow/follow_request set up (#31896)
				
					
				
			This commit is contained in:
		
							parent
							
								
									49cbee3836
								
							
						
					
					
						commit
						a2c4f5f5c0
					
				| @ -20,13 +20,11 @@ class ListAccount < ApplicationRecord | |||||||
|   validates :account_id, uniqueness: { scope: :list_id } |   validates :account_id, uniqueness: { scope: :list_id } | ||||||
|   validate :validate_relationship |   validate :validate_relationship | ||||||
| 
 | 
 | ||||||
|   before_validation :set_follow |   before_validation :set_follow, unless: :list_owner_account_is_account? | ||||||
| 
 | 
 | ||||||
|   private |   private | ||||||
| 
 | 
 | ||||||
|   def set_follow |   def set_follow | ||||||
|     return if list.account_id == account.id |  | ||||||
| 
 |  | ||||||
|     self.follow = Follow.find_by!(account_id: list.account_id, target_account_id: account.id) |     self.follow = Follow.find_by!(account_id: list.account_id, target_account_id: account.id) | ||||||
|   rescue ActiveRecord::RecordNotFound |   rescue ActiveRecord::RecordNotFound | ||||||
|     self.follow_request = FollowRequest.find_by!(account_id: list.account_id, target_account_id: account.id) |     self.follow_request = FollowRequest.find_by!(account_id: list.account_id, target_account_id: account.id) | ||||||
| @ -39,4 +37,8 @@ class ListAccount < ApplicationRecord | |||||||
|     errors.add(:follow, 'mismatched accounts') if follow_id.present? && follow.target_account_id != account_id |     errors.add(:follow, 'mismatched accounts') if follow_id.present? && follow.target_account_id != account_id | ||||||
|     errors.add(:follow_request, 'mismatched accounts') if follow_request_id.present? && follow_request.target_account_id != account_id |     errors.add(:follow_request, 'mismatched accounts') if follow_request_id.present? && follow_request.target_account_id != account_id | ||||||
|   end |   end | ||||||
|  | 
 | ||||||
|  |   def list_owner_account_is_account? | ||||||
|  |     list.account_id == account_id | ||||||
|  |   end | ||||||
| end | end | ||||||
|  | |||||||
							
								
								
									
										48
									
								
								spec/models/list_account_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								spec/models/list_account_spec.rb
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,48 @@ | |||||||
|  | # frozen_string_literal: true | ||||||
|  | 
 | ||||||
|  | require 'rails_helper' | ||||||
|  | 
 | ||||||
|  | RSpec.describe ListAccount do | ||||||
|  |   describe 'Callbacks to set follows' do | ||||||
|  |     context 'when list owner follows account' do | ||||||
|  |       let!(:follow) { Fabricate :follow } | ||||||
|  |       let(:list) { Fabricate :list, account: follow.account } | ||||||
|  | 
 | ||||||
|  |       it 'finds and sets the follow with the list account' do | ||||||
|  |         list_account = described_class.create list: list, account: follow.target_account | ||||||
|  |         expect(list_account) | ||||||
|  |           .to have_attributes( | ||||||
|  |             follow: eq(follow), | ||||||
|  |             follow_request: be_nil | ||||||
|  |           ) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context 'when list owner has a follow request for account' do | ||||||
|  |       let!(:follow_request) { Fabricate :follow_request } | ||||||
|  |       let(:list) { Fabricate :list, account: follow_request.account } | ||||||
|  | 
 | ||||||
|  |       it 'finds and sets the follow request with the list account' do | ||||||
|  |         list_account = described_class.create list: list, account: follow_request.target_account | ||||||
|  |         expect(list_account) | ||||||
|  |           .to have_attributes( | ||||||
|  |             follow: be_nil, | ||||||
|  |             follow_request: eq(follow_request) | ||||||
|  |           ) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     context 'when list owner is the account' do | ||||||
|  |       let(:list) { Fabricate :list  } | ||||||
|  | 
 | ||||||
|  |       it 'does not set follow or follow request' do | ||||||
|  |         list_account = described_class.create list: list, account: list.account | ||||||
|  |         expect(list_account) | ||||||
|  |           .to have_attributes( | ||||||
|  |             follow: be_nil, | ||||||
|  |             follow_request: be_nil | ||||||
|  |           ) | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user