glitchier-soc/spec/controllers/follower_accounts_controller_spec.rb
ThibG f0cca7a79f Hide blocked users from more places (#12733)
* Hide blocked, muted, and blocked-by users from toot favourite lists

* Hide blocked, muted, and blocked-by users from toot reblog lists

* Hide blocked, muted, and blocked-by users from followers/following (API)

* Fix tests

* Hide blocked, muted, and blocked-by users from followers/following on public pages
2019-12-31 00:55:32 +01:00

64 lines
1.8 KiB
Ruby

require 'rails_helper'
describe FollowerAccountsController do
render_views
let(:alice) { Fabricate(:account, username: 'alice') }
let(:follower0) { Fabricate(:account) }
let(:follower1) { Fabricate(:account) }
describe 'GET #index' do
let!(:follow0) { follower0.follow!(alice) }
let!(:follow1) { follower1.follow!(alice) }
context 'when format is html' do
subject(:response) { get :index, params: { account_username: alice.username, format: :html } }
it 'assigns follows' do
expect(response).to have_http_status(200)
assigned = assigns(:follows).to_a
expect(assigned.size).to eq 2
expect(assigned[0]).to eq follow1
expect(assigned[1]).to eq follow0
end
it 'does not assign blocked users' do
user = Fabricate(:user)
user.account.block!(follower0)
sign_in(user)
expect(response).to have_http_status(200)
assigned = assigns(:follows).to_a
expect(assigned.size).to eq 1
expect(assigned[0]).to eq follow1
end
end
context 'when format is json' do
subject(:response) { get :index, params: { account_username: alice.username, page: page, format: :json } }
subject(:body) { JSON.parse(response.body) }
context 'with page' do
let(:page) { 1 }
it 'returns followers' do
expect(response).to have_http_status(200)
expect(body['totalItems']).to eq 2
expect(body['partOf']).to be_present
end
end
context 'without page' do
let(:page) { nil }
it 'returns followers' do
expect(response).to have_http_status(200)
expect(body['totalItems']).to eq 2
expect(body['partOf']).to be_blank
end
end
end
end
end