Default follows for new users (#4871)

When a new user confirms their e-mail, bootstrap their home timeline
by automatically following a set of accounts. By default, all local
admin accounts (that are unlocked). Can be customized by new admin
setting (comma-separated usernames, local and unlocked only)
This commit is contained in:
Eugen Rochko
2017-09-10 09:58:38 +02:00
committed by GitHub
parent f2cbfb2eb3
commit 7d7844a47f
11 changed files with 118 additions and 2 deletions

View File

@ -10,4 +10,22 @@ describe Auth::ConfirmationsController, type: :controller do
expect(response).to have_http_status(:success)
end
end
describe 'GET #show' do
let!(:user) { Fabricate(:user, confirmation_token: 'foobar', confirmed_at: nil) }
before do
allow(BootstrapTimelineWorker).to receive(:perform_async)
@request.env['devise.mapping'] = Devise.mappings[:user]
get :show, params: { confirmation_token: 'foobar' }
end
it 'redirects to login' do
expect(response).to redirect_to(new_user_session_path)
end
it 'queues up bootstrapping of home timeline' do
expect(BootstrapTimelineWorker).to have_received(:perform_async).with(user.account_id)
end
end
end

View File

@ -0,0 +1,37 @@
require 'rails_helper'
RSpec.describe BootstrapTimelineService do
subject { described_class.new }
describe '#call' do
let(:source_account) { Fabricate(:account) }
context 'when setting is empty' do
let!(:admin) { Fabricate(:user, admin: true) }
before do
Setting.bootstrap_timeline_accounts = nil
subject.call(source_account)
end
it 'follows admin accounts from account' do
expect(source_account.following?(admin.account)).to be true
end
end
context 'when setting is set' do
let!(:alice) { Fabricate(:account, username: 'alice') }
let!(:bob) { Fabricate(:account, username: 'bob') }
before do
Setting.bootstrap_timeline_accounts = 'alice, bob'
subject.call(source_account)
end
it 'follows found accounts from account' do
expect(source_account.following?(alice)).to be true
expect(source_account.following?(bob)).to be true
end
end
end
end