|
@@ -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) { false }
|
|
|
|
|
|
- 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
|
|
|
|