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
This commit is contained in:
parent
59797ee233
commit
7badad7797
16 changed files with 165 additions and 27 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue