Fix RefollowWorker not keeping show_reblogs setting (#12707)
* Fix RefollowWorker not keeping show_reblogs setting * Fix RefollowWorker
This commit is contained in:
		
							parent
							
								
									09d54d1f62
								
							
						
					
					
						commit
						aa138ea350
					
				| @ -7,15 +7,18 @@ class RefollowWorker | |||||||
| 
 | 
 | ||||||
|   def perform(target_account_id) |   def perform(target_account_id) | ||||||
|     target_account = Account.find(target_account_id) |     target_account = Account.find(target_account_id) | ||||||
|     return unless target_account.protocol == :activitypub |     return unless target_account.activitypub? | ||||||
|  | 
 | ||||||
|  |     target_account.passive_relationships.where(account: Account.where(domain: nil)).includes(:account).reorder(nil).find_each do |follow| | ||||||
|  |       reblogs = follow.show_reblogs? | ||||||
| 
 | 
 | ||||||
|     target_account.followers.where(domain: nil).reorder(nil).find_each do |follower| |  | ||||||
|       # Locally unfollow remote account |       # Locally unfollow remote account | ||||||
|  |       follower = follow.account | ||||||
|       follower.unfollow!(target_account) |       follower.unfollow!(target_account) | ||||||
| 
 | 
 | ||||||
|       # Schedule re-follow |       # Schedule re-follow | ||||||
|       begin |       begin | ||||||
|         FollowService.new.call(follower, target_account) |         FollowService.new.call(follower, target_account, reblogs: reblogs) | ||||||
|       rescue Mastodon::NotPermittedError, ActiveRecord::RecordNotFound, Mastodon::UnexpectedResponseError, HTTP::Error, OpenSSL::SSL::SSLError |       rescue Mastodon::NotPermittedError, ActiveRecord::RecordNotFound, Mastodon::UnexpectedResponseError, HTTP::Error, OpenSSL::SSL::SSLError | ||||||
|         next |         next | ||||||
|       end |       end | ||||||
|  | |||||||
							
								
								
									
										30
									
								
								spec/workers/refollow_worker_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								spec/workers/refollow_worker_spec.rb
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | |||||||
|  | # frozen_string_literal: true | ||||||
|  | 
 | ||||||
|  | require 'rails_helper' | ||||||
|  | 
 | ||||||
|  | describe RefollowWorker do | ||||||
|  |   subject { described_class.new } | ||||||
|  |   let(:account) { Fabricate(:account, domain: 'example.org', protocol: :activitypub) } | ||||||
|  |   let(:alice)   { Fabricate(:account, domain: nil, username: 'alice') } | ||||||
|  |   let(:bob)     { Fabricate(:account, domain: nil, username: 'bob') } | ||||||
|  | 
 | ||||||
|  |   describe 'perform' do | ||||||
|  |     let(:service) { double } | ||||||
|  | 
 | ||||||
|  |     before do | ||||||
|  |       allow(FollowService).to receive(:new).and_return(service) | ||||||
|  |       allow(service).to receive(:call) | ||||||
|  | 
 | ||||||
|  |       alice.follow!(account, reblogs: true) | ||||||
|  |       bob.follow!(account, reblogs: false) | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     it 'calls FollowService for local followers' do | ||||||
|  |       result = subject.perform(account.id) | ||||||
|  | 
 | ||||||
|  |       expect(result).to be_nil | ||||||
|  |       expect(service).to have_received(:call).with(alice, account, reblogs: true) | ||||||
|  |       expect(service).to have_received(:call).with(bob, account, reblogs: false) | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user