Merge tag 'v2.8.2'

This commit is contained in:
Mike Barnes 2019-05-13 21:56:32 +10:00
commit fc50cffd44
727 changed files with 27044 additions and 9474 deletions

View file

@ -1,7 +1,7 @@
require 'rails_helper'
RSpec.describe ActivityPub::Activity::Create do
let(:sender) { Fabricate(:account, followers_url: 'http://example.com/followers') }
let(:sender) { Fabricate(:account, followers_url: 'http://example.com/followers', domain: 'example.com', uri: 'https://example.com/actor') }
let(:json) do
{
@ -28,6 +28,20 @@ RSpec.describe ActivityPub::Activity::Create do
subject.perform
end
context 'unknown object type' do
let(:object_json) do
{
id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
type: 'Banana',
content: 'Lorem ipsum',
}
end
it 'does not create a status' do
expect(sender.statuses.count).to be_zero
end
end
context 'standalone' do
let(:object_json) do
{
@ -407,7 +421,89 @@ RSpec.describe ActivityPub::Activity::Create do
expect(status).to_not be_nil
end
end
end
context 'with poll' do
let(:object_json) do
{
id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
type: 'Question',
content: 'Which color was the submarine?',
oneOf: [
{
name: 'Yellow',
replies: {
type: 'Collection',
totalItems: 10,
},
},
{
name: 'Blue',
replies: {
type: 'Collection',
totalItems: 3,
}
},
],
}
end
it 'creates status' do
status = sender.statuses.first
expect(status).to_not be_nil
expect(status.poll).to_not be_nil
end
it 'creates a poll' do
poll = sender.polls.first
expect(poll).to_not be_nil
expect(poll.status).to_not be_nil
expect(poll.options).to eq %w(Yellow Blue)
expect(poll.cached_tallies).to eq [10, 3]
end
end
context 'when a vote to a local poll' do
let(:poll) { Fabricate(:poll, options: %w(Yellow Blue)) }
let!(:local_status) { Fabricate(:status, poll: poll) }
let(:object_json) do
{
id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
type: 'Note',
name: 'Yellow',
inReplyTo: ActivityPub::TagManager.instance.uri_for(local_status)
}
end
it 'adds a vote to the poll with correct uri' do
vote = poll.votes.first
expect(vote).to_not be_nil
expect(vote.uri).to eq object_json[:id]
expect(poll.reload.cached_tallies).to eq [1, 0]
end
end
context 'when a vote to an expired local poll' do
let(:poll) do
poll = Fabricate.build(:poll, options: %w(Yellow Blue), expires_at: 1.day.ago)
poll.save(validate: false)
poll
end
let!(:local_status) { Fabricate(:status, poll: poll) }
let(:object_json) do
{
id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
type: 'Note',
name: 'Yellow',
inReplyTo: ActivityPub::TagManager.instance.uri_for(local_status)
}
end
it 'does not add a vote to the poll' do
expect(poll.votes.first).to be_nil
end
end
context 'when sender is followed by local users' do
subject { described_class.new(json, sender, delivery: true) }
@ -509,7 +605,6 @@ RSpec.describe ActivityPub::Activity::Create do
expect(status).to_not be_nil
expect(status.text).to eq 'Lorem ipsum'
end
end
context 'when the sender has no relevance to local activity' do
subject { described_class.new(json, sender, delivery: true) }