Merge branch 'master' into glitch-soc/merge-upstream

Conflicts:
- app/models/status.rb
- db/schema.rb

Both conflicts are caused by us having extra database columns.
This commit is contained in:
Thibaut Girka
2019-03-05 19:23:16 +01:00
64 changed files with 1251 additions and 33 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,6 +421,67 @@ RSpec.describe ActivityPub::Activity::Create do
expect(status).to_not be_nil
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, owned_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
end
context 'when sender is followed by local users' do