Browse Source

Fix `/api/v1/statuses/:id/context` sometimes returing `Mastodon-Async-Refresh` without `result_count` (#36779)

pull/1371/head
Claire 6 months ago committed by Misty De Meo
parent
commit
90828c6df5
No known key found for this signature in database
GPG Key ID: 76CF846A2F674B2C
  1. 2
      app/controllers/api/v1/statuses_controller.rb
  2. 15
      spec/requests/api/v1/statuses_spec.rb

2
app/controllers/api/v1/statuses_controller.rb

@ -66,7 +66,7 @@ class Api::V1::StatusesController < Api::BaseController
if async_refresh.running?
add_async_refresh_header(async_refresh)
elsif !current_account.nil? && @status.should_fetch_replies?
add_async_refresh_header(AsyncRefresh.create(refresh_key))
add_async_refresh_header(AsyncRefresh.create(refresh_key, count_results: true))
WorkerBatch.new.within do |batch|
batch.connect(refresh_key, threshold: 1.0)

15
spec/requests/api/v1/statuses_spec.rb

@ -133,6 +133,21 @@ RSpec.describe '/api/v1/statuses' do
expect(response).to have_http_status(200)
expect(response.content_type)
.to start_with('application/json')
expect(response.headers['Mastodon-Async-Refresh']).to be_nil
end
context 'with a remote status' do
let(:status) { Fabricate(:status, account: Fabricate(:account, domain: 'example.com'), created_at: 1.hour.ago, updated_at: 1.hour.ago) }
it 'returns http success and queues discovery of new posts' do
expect { get "/api/v1/statuses/#{status.id}/context", headers: headers }
.to enqueue_sidekiq_job(ActivityPub::FetchAllRepliesWorker)
expect(response).to have_http_status(200)
expect(response.content_type)
.to start_with('application/json')
expect(response.headers['Mastodon-Async-Refresh']).to match(/result_count=0/)
end
end
end

Loading…
Cancel
Save