Extract some contexts

This commit is contained in:
Matt Jankowski 2024-10-08 13:18:21 -04:00
parent 9c04c0f0be
commit 03a17396e6
2 changed files with 47 additions and 21 deletions

View file

@ -20,21 +20,41 @@ RSpec.describe ActivityPub::FetchRepliesWorker do
let(:json) { Oj.dump(payload) } let(:json) { Oj.dump(payload) }
describe 'perform' do describe 'perform' do
it 'performs a request if the collection URI is from the same host' do context 'when the collection URI is from the same host' do
stub_request(:get, 'https://example.com/statuses_replies/1').to_return(status: 200, body: json, headers: { 'Content-Type': 'application/activity+json' }) before do
subject.perform(status.id, 'https://example.com/statuses_replies/1') stub_request(:get, 'https://example.com/statuses_replies/1').to_return(status: 200, body: json, headers: { 'Content-Type': 'application/activity+json' })
expect(a_request(:get, 'https://example.com/statuses_replies/1')).to have_been_made.once end
it 'performs a request' do
subject.perform(status.id, 'https://example.com/statuses_replies/1')
expect(a_request(:get, 'https://example.com/statuses_replies/1'))
.to have_been_made.once
end
end end
it 'does not perform a request if the collection URI is from a different host' do context 'when the collection URI is from a different host' do
stub_request(:get, 'https://other.com/statuses_replies/1').to_return(status: 200) before do
subject.perform(status.id, 'https://other.com/statuses_replies/1') stub_request(:get, 'https://other.com/statuses_replies/1').to_return(status: 200)
expect(a_request(:get, 'https://other.com/statuses_replies/1')).to_not have_been_made end
it 'does not perform a request' do
subject.perform(status.id, 'https://other.com/statuses_replies/1')
expect(a_request(:get, 'https://other.com/statuses_replies/1'))
.to_not have_been_made
end
end end
it 'raises when request fails' do context 'when the request fails' do
stub_request(:get, 'https://example.com/statuses_replies/1').to_return(status: 500) before do
expect { subject.perform(status.id, 'https://example.com/statuses_replies/1') }.to raise_error Mastodon::UnexpectedResponseError stub_request(:get, 'https://example.com/statuses_replies/1').to_return(status: 500)
end
it 'raises when request fails' do
expect { subject.perform(status.id, 'https://example.com/statuses_replies/1') }
.to raise_error Mastodon::UnexpectedResponseError
end
end end
end end
end end

View file

@ -11,22 +11,28 @@ RSpec.describe PublishAnnouncementReactionWorker do
let(:announcement) { Fabricate(:announcement) } let(:announcement) { Fabricate(:announcement) }
let(:name) { 'name value' } let(:name) { 'name value' }
it 'sends the announcement and name to the service when subscribed' do context 'when subscribed' do
allow(redis).to receive(:exists?).and_return(true) before { allow(redis).to receive(:exists?).and_return(true) }
allow(redis).to receive(:publish)
worker.perform(announcement.id, name) it 'sends the announcement and name to the service' do
allow(redis).to receive(:publish)
expect(redis).to have_received(:publish) worker.perform(announcement.id, name)
expect(redis).to have_received(:publish)
end
end end
it 'does not send the announcement and name to the service when not subscribed' do context 'when not subscribed' do
allow(redis).to receive(:exists?).and_return(false) before { allow(redis).to receive(:exists?).and_return(false) }
allow(redis).to receive(:publish)
worker.perform(announcement.id, name) it 'does not send the announcement and name to the service' do
allow(redis).to receive(:publish)
expect(redis).to_not have_received(:publish) worker.perform(announcement.id, name)
expect(redis).to_not have_received(:publish)
end
end end
it 'returns true for non-existent record' do it 'returns true for non-existent record' do