summaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2018-01-17 23:56:03 +0100
committerGitHub <noreply@github.com>2018-01-17 23:56:03 +0100
commit7badad7797b487b411a2ab34e0f7413741974bb4 (patch)
treea0bf564a945c3dace68815b4be8aa1ca8cb14e1b /spec
parent59797ee233db88db047773294225eb8c8701adb7 (diff)
Fix home regeneration (#6251)
* Fix regeneration marker not being removed after completion * Return HTTP 206 from /api/v1/timelines/home if regeneration in progress Prioritize RegenerationWorker by putting it into default queue * Display loading indicator and poll home timeline while it regenerates * Add graphic to regeneration message * Make "not found" indicator consistent with home regeneration
Diffstat (limited to 'spec')
-rw-r--r--spec/controllers/concerns/user_tracking_concern_spec.rb40
1 files changed, 32 insertions, 8 deletions
diff --git a/spec/controllers/concerns/user_tracking_concern_spec.rb b/spec/controllers/concerns/user_tracking_concern_spec.rb
index 168d44ba6d9..d08095ef827 100644
--- a/spec/controllers/concerns/user_tracking_concern_spec.rb
+++ b/spec/controllers/concerns/user_tracking_concern_spec.rb
@@ -43,15 +43,39 @@ describe ApplicationController, type: :controller do
expect_updated_sign_in_at(user)
end
- it 'regenerates feed when sign in is older than two weeks' do
- allow(RegenerationWorker).to receive(:perform_async)
- user.update(current_sign_in_at: 3.weeks.ago)
- sign_in user, scope: :user
- get :show
+ describe 'feed regeneration' do
+ before do
+ alice = Fabricate(:account)
+ bob = Fabricate(:account)
- expect_updated_sign_in_at(user)
- expect(Redis.current.get("account:#{user.account_id}:regeneration")).to eq 'true'
- expect(RegenerationWorker).to have_received(:perform_async)
+ user.account.follow!(alice)
+ user.account.follow!(bob)
+
+ Fabricate(:status, account: alice, text: 'hello world')
+ Fabricate(:status, account: bob, text: 'yes hello')
+ Fabricate(:status, account: user.account, text: 'test')
+
+ user.update(last_sign_in_at: 'Tue, 04 Jul 2017 14:45:56 UTC +00:00', current_sign_in_at: 'Wed, 05 Jul 2017 22:10:52 UTC +00:00')
+
+ sign_in user, scope: :user
+ end
+
+ it 'sets a regeneration marker while regenerating' do
+ allow(RegenerationWorker).to receive(:perform_async)
+ get :show
+
+ expect_updated_sign_in_at(user)
+ expect(Redis.current.get("account:#{user.account_id}:regeneration")).to eq 'true'
+ expect(RegenerationWorker).to have_received(:perform_async)
+ end
+
+ it 'regenerates feed when sign in is older than two weeks' do
+ get :show
+
+ expect_updated_sign_in_at(user)
+ expect(Redis.current.zcard(FeedManager.instance.key(:home, user.account_id))).to eq 3
+ expect(Redis.current.get("account:#{user.account_id}:regeneration")).to be_nil
+ end
end
def expect_updated_sign_in_at(user)