mirror of https://github.com/mastodon/mastodon
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
|