@ -1,9 +1,9 @@
require 'rails_helper'
RSpec . describe ImportService , type : :service do
let! ( :account ) { Fabricate ( :account ) }
let! ( :bob ) { Fabricate ( :account , username : 'bob' ) }
let! ( :eve ) { Fabricate ( :account , username : 'eve' , domain : 'example.com' ) }
let! ( :account ) { Fabricate ( :account , locked : false ) }
let! ( :bob ) { Fabricate ( :account , username : 'bob' , locked : false ) }
let! ( :eve ) { Fabricate ( :account , username : 'eve' , domain : 'example.com' , locked : false ) }
context 'import old-style list of muted users' do
subject { ImportService . new }
@ -81,4 +81,89 @@ RSpec.describe ImportService, type: :service do
end
end
end
context 'import old-style list of followed users' do
subject { ImportService . new }
let ( :csv ) { attachment_fixture ( 'mute-imports.txt' ) }
before do
allow ( NotificationWorker ) . to receive ( :perform_async )
end
describe 'when no accounts are followed' do
let ( :import ) { Import . create ( account : account , type : 'following' , data : csv ) }
it 'follows the listed accounts, including boosts' do
subject . call ( import )
expect ( account . following . count ) . to eq 2
expect ( Follow . find_by ( account : account , target_account : bob ) . show_reblogs ) . to be true
end
end
describe 'when some accounts are already followed and overwrite is not set' do
let ( :import ) { Import . create ( account : account , type : 'following' , data : csv ) }
it 'follows the listed accounts, including notifications' do
account . follow! ( bob , reblogs : false )
subject . call ( import )
expect ( account . following . count ) . to eq 2
expect ( Follow . find_by ( account : account , target_account : bob ) . show_reblogs ) . to be true
end
end
describe 'when some accounts are already followed and overwrite is set' do
let ( :import ) { Import . create ( account : account , type : 'following' , data : csv , overwrite : true ) }
it 'mutes the listed accounts, including notifications' do
account . follow! ( bob , reblogs : false )
subject . call ( import )
expect ( account . following . count ) . to eq 2
expect ( Follow . find_by ( account : account , target_account : bob ) . show_reblogs ) . to be true
end
end
end
context 'import new-style list of followed users' do
subject { ImportService . new }
let ( :csv ) { attachment_fixture ( 'new-following-imports.txt' ) }
before do
allow ( NotificationWorker ) . to receive ( :perform_async )
end
describe 'when no accounts are followed' do
let ( :import ) { Import . create ( account : account , type : 'following' , data : csv ) }
it 'follows the listed accounts, respecting boosts' do
subject . call ( import )
expect ( account . following . count ) . to eq 2
expect ( Follow . find_by ( account : account , target_account : bob ) . show_reblogs ) . to be true
expect ( Follow . find_by ( account : account , target_account : eve ) . show_reblogs ) . to be false
end
end
describe 'when some accounts are already followed and overwrite is not set' do
let ( :import ) { Import . create ( account : account , type : 'following' , data : csv ) }
it 'mutes the listed accounts, respecting notifications' do
account . follow! ( bob , reblogs : true )
subject . call ( import )
expect ( account . following . count ) . to eq 2
expect ( Follow . find_by ( account : account , target_account : bob ) . show_reblogs ) . to be true
expect ( Follow . find_by ( account : account , target_account : eve ) . show_reblogs ) . to be false
end
end
describe 'when some accounts are already followed and overwrite is set' do
let ( :import ) { Import . create ( account : account , type : 'following' , data : csv , overwrite : true ) }
it 'mutes the listed accounts, respecting notifications' do
account . follow! ( bob , reblogs : true )
subject . call ( import )
expect ( account . following . count ) . to eq 2
expect ( Follow . find_by ( account : account , target_account : bob ) . show_reblogs ) . to be true
expect ( Follow . find_by ( account : account , target_account : eve ) . show_reblogs ) . to be false
end
end
end
end