Misc coverage improvements for Admin:: and Settings:: controllers (#25346)
				
					
				
			This commit is contained in:
		
							parent
							
								
									e0ed0f8c7c
								
							
						
					
					
						commit
						708299bb0d
					
				
					 13 changed files with 187 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -15,6 +15,16 @@ RSpec.describe Admin::Disputes::AppealsController do
 | 
			
		|||
  let(:strike) { Fabricate(:account_warning, target_account: target_account, action: :suspend) }
 | 
			
		||||
  let(:appeal) { Fabricate(:appeal, strike: strike, account: target_account) }
 | 
			
		||||
 | 
			
		||||
  describe 'GET #index' do
 | 
			
		||||
    let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
 | 
			
		||||
 | 
			
		||||
    it 'lists appeals' do
 | 
			
		||||
      get :index
 | 
			
		||||
 | 
			
		||||
      expect(response).to have_http_status(200)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'POST #approve' do
 | 
			
		||||
    let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -165,6 +165,17 @@ RSpec.describe Admin::DomainBlocksController do
 | 
			
		|||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'GET #edit' do
 | 
			
		||||
    let(:domain_block) { Fabricate(:domain_block) }
 | 
			
		||||
 | 
			
		||||
    it 'returns http success' do
 | 
			
		||||
      get :edit, params: { id: domain_block.id }
 | 
			
		||||
 | 
			
		||||
      expect(assigns(:domain_block)).to be_instance_of(DomainBlock)
 | 
			
		||||
      expect(response).to have_http_status(200)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'PUT #update' do
 | 
			
		||||
    subject do
 | 
			
		||||
      post :update, params: { :id => domain_block.id, :domain_block => { domain: 'example.com', severity: new_severity }, 'confirm' => '' }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,6 +9,14 @@ RSpec.describe Admin::ExportDomainAllowsController do
 | 
			
		|||
    sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'GET #new' do
 | 
			
		||||
    it 'returns http success' do
 | 
			
		||||
      get :new
 | 
			
		||||
 | 
			
		||||
      expect(response).to have_http_status(200)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'GET #export' do
 | 
			
		||||
    it 'renders instances' do
 | 
			
		||||
      Fabricate(:domain_allow, domain: 'good.domain')
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,6 +9,14 @@ RSpec.describe Admin::ExportDomainBlocksController do
 | 
			
		|||
    sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'GET #new' do
 | 
			
		||||
    it 'returns http success' do
 | 
			
		||||
      get :new
 | 
			
		||||
 | 
			
		||||
      expect(response).to have_http_status(200)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'GET #export' do
 | 
			
		||||
    it 'renders instances' do
 | 
			
		||||
      Fabricate(:domain_block, domain: 'bad.domain', severity: 'silence', public_comment: 'bad server')
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,6 +34,63 @@ RSpec.describe Admin::InstancesController do
 | 
			
		|||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'GET #show' do
 | 
			
		||||
    it 'shows an instance page' do
 | 
			
		||||
      get :show, params: { id: account_popular_main.domain }
 | 
			
		||||
 | 
			
		||||
      expect(response).to have_http_status(200)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'POST #clear_delivery_errors' do
 | 
			
		||||
    let(:tracker) { instance_double(DeliveryFailureTracker, clear_failures!: true) }
 | 
			
		||||
 | 
			
		||||
    before { allow(DeliveryFailureTracker).to receive(:new).and_return(tracker) }
 | 
			
		||||
 | 
			
		||||
    it 'clears instance delivery errors' do
 | 
			
		||||
      post :clear_delivery_errors, params: { id: account_popular_main.domain }
 | 
			
		||||
 | 
			
		||||
      expect(response).to redirect_to(admin_instance_path(account_popular_main.domain))
 | 
			
		||||
      expect(tracker).to have_received(:clear_failures!)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'POST #restart_delivery' do
 | 
			
		||||
    let(:tracker) { instance_double(DeliveryFailureTracker, track_success!: true) }
 | 
			
		||||
 | 
			
		||||
    before { allow(DeliveryFailureTracker).to receive(:new).and_return(tracker) }
 | 
			
		||||
 | 
			
		||||
    context 'with an unavailable instance' do
 | 
			
		||||
      before { Fabricate(:unavailable_domain, domain: account_popular_main.domain) }
 | 
			
		||||
 | 
			
		||||
      it 'tracks success on the instance' do
 | 
			
		||||
        post :restart_delivery, params: { id: account_popular_main.domain }
 | 
			
		||||
 | 
			
		||||
        expect(response).to redirect_to(admin_instance_path(account_popular_main.domain))
 | 
			
		||||
        expect(tracker).to have_received(:track_success!)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    context 'with an available instance' do
 | 
			
		||||
      it 'does not track success on the instance' do
 | 
			
		||||
        post :restart_delivery, params: { id: account_popular_main.domain }
 | 
			
		||||
 | 
			
		||||
        expect(response).to redirect_to(admin_instance_path(account_popular_main.domain))
 | 
			
		||||
        expect(tracker).to_not have_received(:track_success!)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'POST #stop_delivery' do
 | 
			
		||||
    it 'clears instance delivery errors' do
 | 
			
		||||
      expect do
 | 
			
		||||
        post :stop_delivery, params: { id: account_popular_main.domain }
 | 
			
		||||
      end.to change(UnavailableDomain, :count).by(1)
 | 
			
		||||
 | 
			
		||||
      expect(response).to redirect_to(admin_instance_path(account_popular_main.domain))
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'DELETE #destroy' do
 | 
			
		||||
    subject { delete :destroy, params: { id: Instance.first.id } }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,4 +18,12 @@ describe Admin::Settings::AboutController do
 | 
			
		|||
      expect(response).to have_http_status(:success)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'PUT #update' do
 | 
			
		||||
    it 'updates the settings' do
 | 
			
		||||
      put :update, params: { form_admin_settings: { site_extended_description: 'new site description' } }
 | 
			
		||||
 | 
			
		||||
      expect(response).to redirect_to(admin_settings_about_path)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,4 +18,12 @@ describe Admin::Settings::AppearanceController do
 | 
			
		|||
      expect(response).to have_http_status(:success)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'PUT #update' do
 | 
			
		||||
    it 'updates the settings' do
 | 
			
		||||
      put :update, params: { form_admin_settings: { custom_css: 'html { display: inline; }' } }
 | 
			
		||||
 | 
			
		||||
      expect(response).to redirect_to(admin_settings_appearance_path)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,4 +18,12 @@ describe Admin::Settings::ContentRetentionController do
 | 
			
		|||
      expect(response).to have_http_status(:success)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'PUT #update' do
 | 
			
		||||
    it 'updates the settings' do
 | 
			
		||||
      put :update, params: { form_admin_settings: { media_cache_retention_period: '2' } }
 | 
			
		||||
 | 
			
		||||
      expect(response).to redirect_to(admin_settings_content_retention_path)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,4 +18,12 @@ describe Admin::Settings::DiscoveryController do
 | 
			
		|||
      expect(response).to have_http_status(:success)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'PUT #update' do
 | 
			
		||||
    it 'updates the settings' do
 | 
			
		||||
      put :update, params: { form_admin_settings: { trends: '1' } }
 | 
			
		||||
 | 
			
		||||
      expect(response).to redirect_to(admin_settings_discovery_path)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,4 +18,12 @@ describe Admin::Settings::RegistrationsController do
 | 
			
		|||
      expect(response).to have_http_status(:success)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'PUT #update' do
 | 
			
		||||
    it 'updates the settings' do
 | 
			
		||||
      put :update, params: { form_admin_settings: { registrations_mode: 'open' } }
 | 
			
		||||
 | 
			
		||||
      expect(response).to redirect_to(admin_settings_registrations_path)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,4 +20,26 @@ RSpec.describe Admin::TagsController do
 | 
			
		|||
      expect(response).to have_http_status(200)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'PUT #update' do
 | 
			
		||||
    let!(:tag) { Fabricate(:tag, listable: false) }
 | 
			
		||||
 | 
			
		||||
    context 'with valid params' do
 | 
			
		||||
      it 'updates the tag' do
 | 
			
		||||
        put :update, params: { id: tag.id, tag: { listable: '1' } }
 | 
			
		||||
 | 
			
		||||
        expect(response).to redirect_to(admin_tag_path(tag.id))
 | 
			
		||||
        expect(tag.reload).to be_listable
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    context 'with invalid params' do
 | 
			
		||||
      it 'does not update the tag' do
 | 
			
		||||
        put :update, params: { id: tag.id, tag: { name: 'cant-change-name' } }
 | 
			
		||||
 | 
			
		||||
        expect(response).to have_http_status(200)
 | 
			
		||||
        expect(response).to render_template(:show)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -86,6 +86,24 @@ describe Admin::WebhooksController do
 | 
			
		|||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    describe 'POST #enable' do
 | 
			
		||||
      it 'enables the webhook' do
 | 
			
		||||
        post :enable, params: { id: webhook.id }
 | 
			
		||||
 | 
			
		||||
        expect(webhook.reload).to be_enabled
 | 
			
		||||
        expect(response).to redirect_to(admin_webhook_path(webhook))
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    describe 'POST #disable' do
 | 
			
		||||
      it 'disables the webhook' do
 | 
			
		||||
        post :disable, params: { id: webhook.id }
 | 
			
		||||
 | 
			
		||||
        expect(webhook.reload).to_not be_enabled
 | 
			
		||||
        expect(response).to redirect_to(admin_webhook_path(webhook))
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    describe 'DELETE #destroy' do
 | 
			
		||||
      it 'destroys the record' do
 | 
			
		||||
        expect do
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -252,6 +252,19 @@ RSpec.describe Settings::ImportsController do
 | 
			
		|||
 | 
			
		||||
      include_examples 'export failed rows', "https://foo.com/1\nhttps://foo.com/2\n"
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    context 'with lists' do
 | 
			
		||||
      let(:import_type) { 'lists' }
 | 
			
		||||
 | 
			
		||||
      let!(:rows) do
 | 
			
		||||
        [
 | 
			
		||||
          { 'list_name' => 'Amigos', 'acct' => 'user@example.com' },
 | 
			
		||||
          { 'list_name' => 'Frenemies', 'acct' => 'user@org.org' },
 | 
			
		||||
        ].map { |data| Fabricate(:bulk_import_row, bulk_import: bulk_import, data: data) }
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      include_examples 'export failed rows', "Amigos,user@example.com\nFrenemies,user@org.org\n"
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'POST #create' do
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue