Misc spec coverage for Admin:: area controllers (#25282)
				
					
				
			This commit is contained in:
		
							parent
							
								
									eb6f8181e1
								
							
						
					
					
						commit
						1e243e2df7
					
				| @ -20,4 +20,16 @@ describe Admin::AccountActionsController do | ||||
|       expect(response).to have_http_status(:success) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe 'POST #create' do | ||||
|     let(:account) { Fabricate(:account) } | ||||
| 
 | ||||
|     it 'records the account action' do | ||||
|       expect do | ||||
|         post :create, params: { account_id: account.id, admin_account_action: { type: 'silence' } } | ||||
|       end.to change { account.strikes.count }.by(1) | ||||
| 
 | ||||
|       expect(response).to redirect_to(admin_account_path(account.id)) | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  | ||||
| @ -309,4 +309,128 @@ RSpec.describe Admin::AccountsController do | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe 'POST #unsensitive' do | ||||
|     subject { post :unsensitive, params: { id: account.id } } | ||||
| 
 | ||||
|     let(:current_user) { Fabricate(:user, role: role) } | ||||
|     let(:account) { Fabricate(:account, sensitized_at: 1.year.ago) } | ||||
| 
 | ||||
|     context 'when user is admin' do | ||||
|       let(:role) { UserRole.find_by(name: 'Admin') } | ||||
| 
 | ||||
|       it 'marks accounts not sensitized' do | ||||
|         subject | ||||
| 
 | ||||
|         expect(account.reload).to_not be_sensitized | ||||
|         expect(response).to redirect_to admin_account_path(account.id) | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'when user is not admin' do | ||||
|       let(:role) { UserRole.everyone } | ||||
| 
 | ||||
|       it 'fails to change account' do | ||||
|         subject | ||||
| 
 | ||||
|         expect(response).to have_http_status 403 | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe 'POST #unsilence' do | ||||
|     subject { post :unsilence, params: { id: account.id } } | ||||
| 
 | ||||
|     let(:current_user) { Fabricate(:user, role: role) } | ||||
|     let(:account) { Fabricate(:account, silenced_at: 1.year.ago) } | ||||
| 
 | ||||
|     context 'when user is admin' do | ||||
|       let(:role) { UserRole.find_by(name: 'Admin') } | ||||
| 
 | ||||
|       it 'marks accounts not silenced' do | ||||
|         subject | ||||
| 
 | ||||
|         expect(account.reload).to_not be_silenced | ||||
|         expect(response).to redirect_to admin_account_path(account.id) | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'when user is not admin' do | ||||
|       let(:role) { UserRole.everyone } | ||||
| 
 | ||||
|       it 'fails to change account' do | ||||
|         subject | ||||
| 
 | ||||
|         expect(response).to have_http_status 403 | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe 'POST #unsuspend' do | ||||
|     subject { post :unsuspend, params: { id: account.id } } | ||||
| 
 | ||||
|     let(:current_user) { Fabricate(:user, role: role) } | ||||
|     let(:account) { Fabricate(:account) } | ||||
| 
 | ||||
|     before do | ||||
|       account.suspend! | ||||
|     end | ||||
| 
 | ||||
|     context 'when user is admin' do | ||||
|       let(:role) { UserRole.find_by(name: 'Admin') } | ||||
| 
 | ||||
|       it 'marks accounts not suspended' do | ||||
|         subject | ||||
| 
 | ||||
|         expect(account.reload).to_not be_suspended | ||||
|         expect(response).to redirect_to admin_account_path(account.id) | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'when user is not admin' do | ||||
|       let(:role) { UserRole.everyone } | ||||
| 
 | ||||
|       it 'fails to change account' do | ||||
|         subject | ||||
| 
 | ||||
|         expect(response).to have_http_status 403 | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe 'POST #destroy' do | ||||
|     subject { post :destroy, params: { id: account.id } } | ||||
| 
 | ||||
|     let(:current_user) { Fabricate(:user, role: role) } | ||||
|     let(:account) { Fabricate(:account) } | ||||
| 
 | ||||
|     before do | ||||
|       account.suspend! | ||||
|     end | ||||
| 
 | ||||
|     context 'when user is admin' do | ||||
|       let(:role) { UserRole.find_by(name: 'Admin') } | ||||
| 
 | ||||
|       before do | ||||
|         allow(Admin::AccountDeletionWorker).to receive(:perform_async).with(account.id) | ||||
|       end | ||||
| 
 | ||||
|       it 'destroys the account' do | ||||
|         subject | ||||
| 
 | ||||
|         expect(Admin::AccountDeletionWorker).to have_received(:perform_async).with(account.id) | ||||
|         expect(response).to redirect_to admin_account_path(account.id) | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'when user is not admin' do | ||||
|       let(:role) { UserRole.everyone } | ||||
| 
 | ||||
|       it 'fails to change account' do | ||||
|         subject | ||||
| 
 | ||||
|         expect(response).to have_http_status 403 | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  | ||||
| @ -73,4 +73,30 @@ describe Admin::AnnouncementsController do | ||||
|       expect(flash.notice).to match(I18n.t('admin.announcements.destroyed_msg')) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe 'POST #publish' do | ||||
|     subject { post :publish, params: { id: announcement.id } } | ||||
| 
 | ||||
|     let(:announcement) { Fabricate(:announcement, published_at: nil) } | ||||
| 
 | ||||
|     it 'marks announcement published' do | ||||
|       subject | ||||
| 
 | ||||
|       expect(announcement.reload).to be_published | ||||
|       expect(response).to redirect_to admin_announcements_path | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe 'POST #unpublish' do | ||||
|     subject { post :unpublish, params: { id: announcement.id } } | ||||
| 
 | ||||
|     let(:announcement) { Fabricate(:announcement, published_at: 4.days.ago) } | ||||
| 
 | ||||
|     it 'marks announcement as not published' do | ||||
|       subject | ||||
| 
 | ||||
|       expect(announcement.reload).to_not be_published | ||||
|       expect(response).to redirect_to admin_announcements_path | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  | ||||
| @ -56,4 +56,45 @@ describe Admin::RelaysController do | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe 'DELETE #destroy' do | ||||
|     let(:relay) { Fabricate(:relay) } | ||||
| 
 | ||||
|     it 'deletes an existing relay' do | ||||
|       delete :destroy, params: { id: relay.id } | ||||
| 
 | ||||
|       expect { relay.reload }.to raise_error(ActiveRecord::RecordNotFound) | ||||
|       expect(response).to redirect_to(admin_relays_path) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe 'POST #enable' do | ||||
|     let(:relay) { Fabricate(:relay, state: :idle) } | ||||
| 
 | ||||
|     before do | ||||
|       stub_request(:post, /example.com/).to_return(status: 200) | ||||
|     end | ||||
| 
 | ||||
|     it 'updates a relay from idle to pending' do | ||||
|       post :enable, params: { id: relay.id } | ||||
| 
 | ||||
|       expect(relay.reload).to be_pending | ||||
|       expect(response).to redirect_to(admin_relays_path) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe 'POST #disable' do | ||||
|     let(:relay) { Fabricate(:relay, state: :pending) } | ||||
| 
 | ||||
|     before do | ||||
|       stub_request(:post, /example.com/).to_return(status: 200) | ||||
|     end | ||||
| 
 | ||||
|     it 'updates a relay from pending to idle' do | ||||
|       post :disable, params: { id: relay.id } | ||||
| 
 | ||||
|       expect(relay.reload).to be_idle | ||||
|       expect(response).to redirect_to(admin_relays_path) | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  | ||||
| @ -41,6 +41,16 @@ describe Admin::StatusesController do | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe 'GET #show' do | ||||
|     before do | ||||
|       get :show, params: { account_id: account.id, id: status.id } | ||||
|     end | ||||
| 
 | ||||
|     it 'returns http success' do | ||||
|       expect(response).to have_http_status(200) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe 'POST #batch' do | ||||
|     before do | ||||
|       post :batch, params: { :account_id => account.id, action => '', :admin_status_batch_action => { status_ids: status_ids } } | ||||
|  | ||||
| @ -18,4 +18,68 @@ describe Admin::WarningPresetsController do | ||||
|       expect(response).to have_http_status(:success) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe 'GET #edit' do | ||||
|     let(:account_warning_preset) { Fabricate(:account_warning_preset) } | ||||
| 
 | ||||
|     it 'returns http success and renders edit' do | ||||
|       get :edit, params: { id: account_warning_preset.id } | ||||
| 
 | ||||
|       expect(response).to have_http_status(:success) | ||||
|       expect(response).to render_template(:edit) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe 'POST #create' do | ||||
|     context 'with valid data' do | ||||
|       it 'creates a new account_warning_preset and redirects' do | ||||
|         expect do | ||||
|           post :create, params: { account_warning_preset: { text: 'The account_warning_preset text.' } } | ||||
|         end.to change(AccountWarningPreset, :count).by(1) | ||||
| 
 | ||||
|         expect(response).to redirect_to(admin_warning_presets_path) | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'with invalid data' do | ||||
|       it 'does creates a new account_warning_preset and renders index' do | ||||
|         expect do | ||||
|           post :create, params: { account_warning_preset: { text: '' } } | ||||
|         end.to_not change(AccountWarningPreset, :count) | ||||
| 
 | ||||
|         expect(response).to render_template(:index) | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe 'PUT #update' do | ||||
|     let(:account_warning_preset) { Fabricate(:account_warning_preset, text: 'Original text') } | ||||
| 
 | ||||
|     context 'with valid data' do | ||||
|       it 'updates the account_warning_preset and redirects' do | ||||
|         put :update, params: { id: account_warning_preset.id, account_warning_preset: { text: 'Updated text.' } } | ||||
| 
 | ||||
|         expect(response).to redirect_to(admin_warning_presets_path) | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'with invalid data' do | ||||
|       it 'does not update the account_warning_preset and renders index' do | ||||
|         put :update, params: { id: account_warning_preset.id, account_warning_preset: { text: '' } } | ||||
| 
 | ||||
|         expect(response).to render_template(:edit) | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe 'DELETE #destroy' do | ||||
|     let!(:account_warning_preset) { Fabricate(:account_warning_preset) } | ||||
| 
 | ||||
|     it 'destroys the account_warning_preset and redirects' do | ||||
|       delete :destroy, params: { id: account_warning_preset.id } | ||||
| 
 | ||||
|       expect { account_warning_preset.reload }.to raise_error(ActiveRecord::RecordNotFound) | ||||
|       expect(response).to redirect_to(admin_warning_presets_path) | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user