diff options
Diffstat (limited to 'spec/services/import_service_spec.rb')
-rw-r--r-- | spec/services/import_service_spec.rb | 91 |
1 files changed, 88 insertions, 3 deletions
diff --git a/spec/services/import_service_spec.rb b/spec/services/import_service_spec.rb index bd23781ce..5cf2dadf0 100644 --- a/spec/services/import_service_spec.rb +++ b/spec/services/import_service_spec.rb @@ -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 |