49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| require 'rails_helper'
 | |
| 
 | |
| RSpec.describe MoveService do
 | |
|   subject { described_class.new.call(migration) }
 | |
| 
 | |
|   context 'with a valid migration record' do
 | |
|     let(:migration) { Fabricate(:account_migration, account: source_account, target_account: target_account) }
 | |
|     let(:source_account) { Fabricate(:account) }
 | |
|     let(:target_account) { Fabricate(:account, also_known_as: [source_account_uri]) }
 | |
| 
 | |
|     it 'migrates the account to a new account' do
 | |
|       expect { subject }
 | |
|         .to change_source_moved_value
 | |
|         .and process_local_updates
 | |
|         .and distribute_updates
 | |
|         .and distribute_move
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def source_account_uri
 | |
|     ActivityPub::TagManager
 | |
|       .instance
 | |
|       .uri_for(source_account)
 | |
|   end
 | |
| 
 | |
|   def change_source_moved_value
 | |
|     change(source_account.reload, :moved_to_account)
 | |
|       .from(nil)
 | |
|       .to(target_account)
 | |
|   end
 | |
| 
 | |
|   def process_local_updates
 | |
|     enqueue_sidekiq_job(MoveWorker)
 | |
|       .with(source_account.id, target_account.id)
 | |
|   end
 | |
| 
 | |
|   def distribute_updates
 | |
|     enqueue_sidekiq_job(ActivityPub::UpdateDistributionWorker)
 | |
|       .with(source_account.id)
 | |
|   end
 | |
| 
 | |
|   def distribute_move
 | |
|     enqueue_sidekiq_job(ActivityPub::MoveDistributionWorker)
 | |
|       .with(migration.id)
 | |
|   end
 | |
| end
 |