require 'rails_helper' RSpec.describe 'Super Admin accounts API', type: :request do include ActiveJob::TestHelper let!(:super_admin) { create(:super_admin) } let!(:account) { create(:account) } describe 'GET /super_admin/accounts' do context 'when it is an unauthenticated user' do it 'returns unauthorized' do get '/super_admin/accounts' expect(response).to have_http_status(:redirect) end end context 'when it is an authenticated user' do it 'shows the list of accounts' do sign_in(super_admin, scope: :super_admin) get '/super_admin/accounts' expect(response).to have_http_status(:success) expect(response.body).to include('New account') expect(response.body).to include(account.name) end end end describe 'POST /super_admin/accounts/{account_id}/reset_cache' do before do create(:label, account: account) create(:inbox, account: account) create(:team, account: account) end context 'when it is an unauthenticated user' do it 'returns unauthorized' do post "/super_admin/accounts/#{account.id}/reset_cache" expect(response).to have_http_status(:redirect) end end context 'when it is an authenticated user' do it 'shows the list of accounts' do expect(account.cache_keys.keys).to contain_exactly(:inbox, :label, :team) sign_in(super_admin, scope: :super_admin) post "/super_admin/accounts/#{account.id}/reset_cache" expect(response).to have_http_status(:redirect) expect(flash[:notice]).to eq('Cache keys cleared') expect(account.reload.cache_keys.values.map(&:to_i)).to eq([0, 0, 0]) end end end describe 'DELETE /super_admin/accounts/{account_id}' do context 'when it is an unauthenticated user' do it 'returns unauthorized' do delete "/super_admin/accounts/#{account.id}" expect(response).to have_http_status(:redirect) end end context 'when it is an authenticated user' do it 'Deletes the account' do total_accounts = Account.count sign_in(super_admin, scope: :super_admin) perform_enqueued_jobs(only: DeleteObjectJob) do delete "/super_admin/accounts/#{account.id}" end expect(Account.count).to eq(total_accounts - 1) end end end end