Merge commit '1cb978bcc3d291a045f367e072ca0af1a1c4dbbc' into glitch-soc/merge-upstream

This commit is contained in:
Claire
2023-08-22 18:50:14 +02:00
22 changed files with 237 additions and 27 deletions
@@ -13,12 +13,17 @@ RSpec.describe CacheConcern do
def empty_relation
render plain: cache_collection(Status.none, Status).size
end
def account_statuses_favourites
render plain: cache_collection(Status.where(account_id: params[:id]), Status).map(&:favourites_count)
end
end
before do
routes.draw do
get 'empty_array' => 'anonymous#empty_array'
post 'empty_relation' => 'anonymous#empty_relation'
get 'empty_array' => 'anonymous#empty_array'
get 'empty_relation' => 'anonymous#empty_relation'
get 'account_statuses_favourites' => 'anonymous#account_statuses_favourites'
end
end
@@ -36,5 +41,20 @@ RSpec.describe CacheConcern do
expect(response.body).to eq '0'
end
end
context 'when given a collection of statuses' do
let!(:account) { Fabricate(:account) }
let!(:status) { Fabricate(:status, account: account) }
it 'correctly updates with new interactions' do
get :account_statuses_favourites, params: { id: account.id }
expect(response.body).to eq '[0]'
FavouriteService.new.call(account, status)
get :account_statuses_favourites, params: { id: account.id }
expect(response.body).to eq '[1]'
end
end
end
end
+56
View File
@@ -0,0 +1,56 @@
# frozen_string_literal: true
require 'rails_helper'
describe CacheBuster do
subject { described_class.new(secret_header: secret_header, secret: secret, http_method: http_method) }
let(:secret_header) { nil }
let(:secret) { nil }
let(:http_method) { nil }
let(:purge_url) { 'https://example.com/test_purge' }
describe '#bust' do
shared_examples 'makes_request' do
it 'makes an HTTP purging request' do
method = http_method&.to_sym || :get
stub_request(method, purge_url).to_return(status: 200)
subject.bust(purge_url)
test_request = a_request(method, purge_url)
test_request = test_request.with(headers: { secret_header => secret }) if secret && secret_header
expect(test_request).to have_been_made.once
end
end
context 'when using default options' do
include_examples 'makes_request'
end
context 'when specifying a secret header' do
let(:secret_header) { 'X-Purge-Secret' }
let(:secret) { SecureRandom.hex(20) }
include_examples 'makes_request'
end
context 'when specifying a PURGE method' do
let(:http_method) { 'purge' }
context 'when not using headers' do
include_examples 'makes_request'
end
context 'when specifying a secret header' do
let(:secret_header) { 'X-Purge-Secret' }
let(:secret) { SecureRandom.hex(20) }
include_examples 'makes_request'
end
end
end
end