mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-11-04 04:57:51 +00:00 
			
		
		
		
	Allows super admins to reset the cache for an account. This will force the front end to fetch the data again on the next load. fixes: https://linear.app/chatwoot/issue/CW-1817 Co-authored-by: Sojan <sojan@pepalo.com>
		
			
				
	
	
		
			76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
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
 |