0
0
Fork 0

Fix not updating a status when newer version is fetched manually (#17745)

This commit is contained in:
Eugen Rochko 2022-03-12 09:11:36 +01:00 committed by GitHub
parent 883099f3c9
commit ddbe906c25
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 72 additions and 30 deletions

View file

@ -60,9 +60,7 @@ RSpec.configure do |config|
config.after :each do
Rails.cache.clear
keys = Redis.current.keys
Redis.current.del(keys) if keys.any?
Redis.current.del(Redis.current.keys)
end
end

View file

@ -3,9 +3,11 @@ require 'rails_helper'
RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
include ActionView::Helpers::TextHelper
let(:sender) { Fabricate(:account) }
let(:recipient) { Fabricate(:account) }
let(:valid_domain) { Rails.configuration.x.local_domain }
let!(:sender) { Fabricate(:account).tap { |account| account.update(uri: ActivityPub::TagManager.instance.uri_for(account)) } }
let!(:recipient) { Fabricate(:account) }
let!(:valid_domain) { Rails.configuration.x.local_domain }
let(:existing_status) { nil }
let(:note) do
{
@ -19,11 +21,13 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
subject { described_class.new }
before do
stub_request(:head, 'https://example.com/watch?v=12345').to_return(status: 404, body: '')
end
describe '#call' do
before do
sender.update(uri: ActivityPub::TagManager.instance.uri_for(sender))
stub_request(:head, 'https://example.com/watch?v=12345').to_return(status: 404, body: '')
existing_status
subject.call(object[:id], prefetched_body: Oj.dump(object))
end
@ -186,5 +190,37 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
expect(sender.statuses.first).to be_nil
end
end
context 'when status already exists' do
let(:existing_status) { Fabricate(:status, account: sender, text: 'Foo', uri: note[:id]) }
context 'with a Note object' do
let(:object) { note }
it 'updates status' do
existing_status.reload
expect(existing_status.text).to eq 'Lorem ipsum'
expect(existing_status.edits).to_not be_empty
end
end
context 'with a Create activity' do
let(:object) do
{
'@context': 'https://www.w3.org/ns/activitystreams',
id: "https://#{valid_domain}/@foo/1234/create",
type: 'Create',
actor: ActivityPub::TagManager.instance.uri_for(sender),
object: note,
}
end
it 'updates status' do
existing_status.reload
expect(existing_status.text).to eq 'Lorem ipsum'
expect(existing_status.edits).to_not be_empty
end
end
end
end
end