@ -71,50 +71,80 @@ RSpec.describe Api::V1::AccountsController, type: :controller do
let ( :scopes ) { 'write:follows' }
let ( :other_account ) { Fabricate ( :user , email : 'bob@example.com' , account : Fabricate ( :account , username : 'bob' , locked : locked ) ) . account }
before do
post :follow , params : { id : other_account . id }
end
context do
before do
post :follow , params : { id : other_account . id }
end
context 'with unlocked account' do
let ( :locked ) { false }
context 'with unlocked account' do
let ( :locked ) { false }
it 'returns http success' do
expect ( response ) . to have_http_status ( 200 )
end
it 'returns http success' do
expect ( response ) . to have_http_status ( 200 )
end
it 'returns JSON with following=true and requested=false' do
json = body_as_json
it 'returns JSON with following=true and requested=false' do
json = body_as_json
expect ( json [ :following ] ) . to be true
expect ( json [ :requested ] ) . to be false
end
expect ( json [ :following ] ) . to be true
expect ( json [ :requested ] ) . to be false
end
it 'creates a following relation between user and target user' do
expect ( user . account . following? ( other_account ) ) . to be true
end
it 'creates a following relation between user and target user' do
expect ( user . account . following? ( other_account ) ) . to be true
it_behaves_like 'forbidden for wrong scope' , 'read:accounts'
end
it_behaves_like 'forbidden for wrong scope' , 'read:accounts'
context 'with locked account' do
let ( :locked ) { true }
it 'returns http success' do
expect ( response ) . to have_http_status ( 200 )
end
it 'returns JSON with following=false and requested=true' do
json = body_as_json
expect ( json [ :following ] ) . to be false
expect ( json [ :requested ] ) . to be true
end
it 'creates a follow request relation between user and target user' do
expect ( user . account . requested? ( other_account ) ) . to be true
end
it_behaves_like 'forbidden for wrong scope' , 'read:accounts'
end
end
context 'with locked account' do
let ( :locked ) { true }
context ' modifying follow options ' do
let ( :locked ) { fals e }
it 'returns http success' do
expect ( response ) . to have_http_status ( 200 )
before do
user. account . follow! ( other_account , reblogs : false , notify : false )
end
it 'returns JSON with following=false and requested=true' do
it 'changes reblogs option' do
post :follow , params : { id : other_account . id , reblogs : true }
json = body_as_json
expect ( json [ :following ] ) . to be false
expect ( json [ :requested ] ) . to be true
expect ( json [ :following ] ) . to be true
expect ( json [ :showing_reblogs ] ) . to be true
expect ( json [ :notifying ] ) . to be false
end
it 'creates a follow request relation between user and target user' do
expect ( user . account . requested? ( other_account ) ) . to be true
end
it 'changes notify option' do
post :follow , params : { id : other_account . id , notify : true }
json = body_as_json
it_behaves_like 'forbidden for wrong scope' , 'read:accounts'
expect ( json [ :following ] ) . to be true
expect ( json [ :showing_reblogs ] ) . to be false
expect ( json [ :notifying ] ) . to be true
end
end
end