require 'rails_helper'
RSpec.describe ActivityPub::Activity::Block do
let(:sender) { Fabricate(:account) }
let(:recipient) { Fabricate(:account) }
let(:json) do
{
'@context': 'https://www.w3.org/ns/activitystreams',
id: 'foo',
type: 'Block',
actor: ActivityPub::TagManager.instance.uri_for(sender),
object: ActivityPub::TagManager.instance.uri_for(recipient),
}.with_indifferent_access
end
context 'when the recipient does not follow the sender' do
describe '#perform' do
subject { described_class.new(json, sender) }
before do
subject.perform
it 'creates a block from sender to recipient' do
expect(sender.blocking?(recipient)).to be true
context 'when the recipient follows the sender' do
recipient.follow!(sender)
it 'ensures recipient is not following sender' do
expect(recipient.following?(sender)).to be false
context 'when a matching undo has been received first' do
let(:undo_json) do
id: 'bar',
type: 'Undo',
object: json,
ActivityPub::Activity::Undo.new(undo_json, sender).perform
it 'does not create a block from sender to recipient' do
expect(sender.blocking?(recipient)).to be false