Convert `api/v1/directories` controller spec to request spec (#28356)

th-new
Matt Jankowski 2023-12-14 05:38:06 -05:00 committed by GitHub
parent cd9ebf5f0f
commit adbfd40a1b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 26 additions and 22 deletions

View File

@ -2,17 +2,13 @@
require 'rails_helper' require 'rails_helper'
describe Api::V1::DirectoriesController do describe 'Directories API' do
render_views
let(:user) { Fabricate(:user, confirmed_at: nil) } let(:user) { Fabricate(:user, confirmed_at: nil) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:follows') } let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
let(:scopes) { 'read:follows' }
let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
before do describe 'GET /api/v1/directories' do
allow(controller).to receive(:doorkeeper_token) { token }
end
describe 'GET #show' do
context 'with no params' do context 'with no params' do
before do before do
local_unconfirmed_account = Fabricate( local_unconfirmed_account = Fabricate(
@ -58,27 +54,32 @@ describe Api::V1::DirectoriesController do
) )
domain_blocked_account.create_account_stat! domain_blocked_account.create_account_stat!
Fabricate(:account_domain_block, account: user.account, domain: 'test.example') Fabricate(:account_domain_block, account: user.account, domain: 'test.example')
local_discoverable_account.create_account_stat!
eligible_remote_account.create_account_stat!
end end
it 'returns the local discoverable account and the remote discoverable account' do let(:local_discoverable_account) do
local_discoverable_account = Fabricate( Fabricate(
:account, :account,
domain: nil, domain: nil,
user: Fabricate(:user, confirmed_at: 10.days.ago, approved: true), user: Fabricate(:user, confirmed_at: 10.days.ago, approved: true),
discoverable: true, discoverable: true,
username: 'local_discoverable' username: 'local_discoverable'
) )
local_discoverable_account.create_account_stat! end
eligible_remote_account = Fabricate( let(:eligible_remote_account) do
Fabricate(
:account, :account,
domain: 'host.example', domain: 'host.example',
discoverable: true, discoverable: true,
username: 'eligible_remote' username: 'eligible_remote'
) )
eligible_remote_account.create_account_stat! end
get :show it 'returns the local discoverable account and the remote discoverable account' do
get '/api/v1/directory', headers: headers
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
expect(body_as_json.size).to eq(2) expect(body_as_json.size).to eq(2)
@ -87,14 +88,17 @@ describe Api::V1::DirectoriesController do
end end
context 'when asking for local accounts only' do context 'when asking for local accounts only' do
it 'returns only the local accounts' do let(:user) { Fabricate(:user, confirmed_at: 10.days.ago, approved: true) }
user = Fabricate(:user, confirmed_at: 10.days.ago, approved: true) let(:local_account) { Fabricate(:account, domain: nil, user: user) }
local_account = Fabricate(:account, domain: nil, user: user) let(:remote_account) { Fabricate(:account, domain: 'host.example') }
remote_account = Fabricate(:account, domain: 'host.example')
before do
local_account.create_account_stat! local_account.create_account_stat!
remote_account.create_account_stat! remote_account.create_account_stat!
end
get :show, params: { local: '1' } it 'returns only the local accounts' do
get '/api/v1/directory', headers: headers, params: { local: '1' }
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
expect(body_as_json.size).to eq(1) expect(body_as_json.size).to eq(1)
@ -108,7 +112,7 @@ describe Api::V1::DirectoriesController do
old_stat = Fabricate(:account_stat, last_status_at: 1.day.ago) old_stat = Fabricate(:account_stat, last_status_at: 1.day.ago)
new_stat = Fabricate(:account_stat, last_status_at: 1.minute.ago) new_stat = Fabricate(:account_stat, last_status_at: 1.minute.ago)
get :show, params: { order: 'active' } get '/api/v1/directory', headers: headers, params: { order: 'active' }
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
expect(body_as_json.size).to eq(2) expect(body_as_json.size).to eq(2)
@ -123,7 +127,7 @@ describe Api::V1::DirectoriesController do
travel_to 10.seconds.from_now travel_to 10.seconds.from_now
account_new = Fabricate(:account_stat).account account_new = Fabricate(:account_stat).account
get :show, params: { order: 'new' } get '/api/v1/directory', headers: headers, params: { order: 'new' }
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
expect(body_as_json.size).to eq(2) expect(body_as_json.size).to eq(2)