@ -17,62 +17,171 @@ RSpec.describe ActivityPub::Activity::Follow do
describe '#perform' do
describe '#perform' do
subject { described_class . new ( json , sender ) }
subject { described_class . new ( json , sender ) }
context 'unlocked account' do
context 'with no prior follow' do
before do
context 'unlocked account' do
subject . perform
before do
subject . perform
end
it 'creates a follow from sender to recipient' do
expect ( sender . following? ( recipient ) ) . to be true
expect ( sender . active_relationships . find_by ( target_account : recipient ) . uri ) . to eq 'foo'
end
it 'does not create a follow request' do
expect ( sender . requested? ( recipient ) ) . to be false
end
end
end
it 'creates a follow from sender to recipient' do
context 'silenced account following an unlocked account' do
expect ( sender . following? ( recipient ) ) . to be true
before do
sender . touch ( :silenced_at )
subject . perform
end
it 'does not create a follow from sender to recipient' do
expect ( sender . following? ( recipient ) ) . to be false
end
it 'creates a follow request' do
expect ( sender . requested? ( recipient ) ) . to be true
expect ( sender . follow_requests . find_by ( target_account : recipient ) . uri ) . to eq 'foo'
end
end
end
it 'does not create a follow request' do
context 'unlocked account muting the sender' do
expect ( sender . requested? ( recipient ) ) . to be false
before do
recipient . mute! ( sender )
subject . perform
end
it 'creates a follow from sender to recipient' do
expect ( sender . following? ( recipient ) ) . to be true
expect ( sender . active_relationships . find_by ( target_account : recipient ) . uri ) . to eq 'foo'
end
it 'does not create a follow request' do
expect ( sender . requested? ( recipient ) ) . to be false
end
end
context 'locked account' do
before do
recipient . update ( locked : true )
subject . perform
end
it 'does not create a follow from sender to recipient' do
expect ( sender . following? ( recipient ) ) . to be false
end
it 'creates a follow request' do
expect ( sender . requested? ( recipient ) ) . to be true
expect ( sender . follow_requests . find_by ( target_account : recipient ) . uri ) . to eq 'foo'
end
end
end
end
end
context 'silenced account following an unlocked account' do
context 'when a follow relationship already exists ' do
before do
before do
sender . touch ( :silenced_at )
sender . active_relationships . create! ( target_account : recipient , uri : 'bar' )
subject . perform
end
end
it 'does not create a follow from sender to recipient' do
context 'unlocked account' do
expect ( sender . following? ( recipient ) ) . to be false
before do
end
subject . perform
end
it 'correctly sets the new URI' do
expect ( sender . active_relationships . find_by ( target_account : recipient ) . uri ) . to eq 'foo'
end
it 'creates a follow request' do
it 'does not create a follow request' do
expect ( sender . requested? ( recipient ) ) . to be true
expect ( sender . requested? ( recipient ) ) . to be false
end
end
end
end
context 'unlocked account muting the sender' do
context 'silenced account following an unlocked account' do
before do
before do
recipient . mute! ( sender )
sender . touch ( :silenced_at )
subject . perform
subject . perform
end
it 'correctly sets the new URI' do
expect ( sender . active_relationships . find_by ( target_account : recipient ) . uri ) . to eq 'foo'
end
it 'does not create a follow request' do
expect ( sender . requested? ( recipient ) ) . to be false
end
end
end
it 'creates a follow from sender to recipient' do
context 'unlocked account muting the sender' do
expect ( sender . following? ( recipient ) ) . to be true
before do
recipient . mute! ( sender )
subject . perform
end
it 'correctly sets the new URI' do
expect ( sender . active_relationships . find_by ( target_account : recipient ) . uri ) . to eq 'foo'
end
it 'does not create a follow request' do
expect ( sender . requested? ( recipient ) ) . to be false
end
end
end
it 'does not create a follow request' do
context 'locked account' do
expect ( sender . requested? ( recipient ) ) . to be false
before do
recipient . update ( locked : true )
subject . perform
end
it 'correctly sets the new URI' do
expect ( sender . active_relationships . find_by ( target_account : recipient ) . uri ) . to eq 'foo'
end
it 'does not create a follow request' do
expect ( sender . requested? ( recipient ) ) . to be false
end
end
end
end
end
context 'locked account' do
context 'when a follow request already exists ' do
before do
before do
recipient . update ( locked : true )
sender . follow_requests . create! ( target_account : recipient , uri : 'bar' )
subject . perform
end
end
it 'does not create a follow from sender to recipient' do
context 'silenced account following an unlocked account' do
expect ( sender . following? ( recipient ) ) . to be false
before do
sender . touch ( :silenced_at )
subject . perform
end
it 'does not create a follow from sender to recipient' do
expect ( sender . following? ( recipient ) ) . to be false
end
it 'correctly sets the new URI' do
expect ( sender . requested? ( recipient ) ) . to be true
expect ( sender . follow_requests . find_by ( target_account : recipient ) . uri ) . to eq 'foo'
end
end
end
it 'creates a follow request' do
context 'locked account' do
expect ( sender . requested? ( recipient ) ) . to be true
before do
recipient . update ( locked : true )
subject . perform
end
it 'does not create a follow from sender to recipient' do
expect ( sender . following? ( recipient ) ) . to be false
end
it 'correctly sets the new URI' do
expect ( sender . requested? ( recipient ) ) . to be true
expect ( sender . follow_requests . find_by ( target_account : recipient ) . uri ) . to eq 'foo'
end
end
end
end
end
end
end