diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2017-09-10 09:58:38 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-10 09:58:38 +0200 |
commit | 7d7844a47fdfb8862847f025dc4c1b1bc5fdafe5 (patch) | |
tree | f15741c04d74eb2999a8c36ea758cc20da17830f /spec | |
parent | f2cbfb2eb375cde302461a91e5fb0a3af8f6eeb5 (diff) |
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)
Diffstat (limited to 'spec')
-rw-r--r-- | spec/controllers/auth/confirmations_controller_spec.rb | 18 | ||||
-rw-r--r-- | spec/services/bootstrap_timeline_service_spec.rb | 37 |
2 files changed, 55 insertions, 0 deletions
diff --git a/spec/controllers/auth/confirmations_controller_spec.rb b/spec/controllers/auth/confirmations_controller_spec.rb index cf7f91e52..2ec36c060 100644 --- a/spec/controllers/auth/confirmations_controller_spec.rb +++ b/spec/controllers/auth/confirmations_controller_spec.rb @@ -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 diff --git a/spec/services/bootstrap_timeline_service_spec.rb b/spec/services/bootstrap_timeline_service_spec.rb new file mode 100644 index 000000000..5189b1de8 --- /dev/null +++ b/spec/services/bootstrap_timeline_service_spec.rb @@ -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 |