Remove exports/base controller in favor of shared concern (#3444)
This commit is contained in:
		
							parent
							
								
									23081bb299
								
							
						
					
					
						commit
						0ebe7d6d23
					
				
					 6 changed files with 57 additions and 28 deletions
				
			
		
							
								
								
									
										30
									
								
								app/controllers/concerns/export_controller_concern.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								app/controllers/concerns/export_controller_concern.rb
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,30 @@ | |||
| # frozen_string_literal: true | ||||
| 
 | ||||
| module ExportControllerConcern | ||||
|   extend ActiveSupport::Concern | ||||
| 
 | ||||
|   included do | ||||
|     before_action :authenticate_user! | ||||
|     before_action :load_export | ||||
|   end | ||||
| 
 | ||||
|   private | ||||
| 
 | ||||
|   def load_export | ||||
|     @export = Export.new(current_account) | ||||
|   end | ||||
| 
 | ||||
|   def send_export_file | ||||
|     respond_to do |format| | ||||
|       format.csv { send_data export_data, filename: export_filename } | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def export_data | ||||
|     raise 'Override in controller' | ||||
|   end | ||||
| 
 | ||||
|   def export_filename | ||||
|     "#{controller_name}.csv" | ||||
|   end | ||||
| end | ||||
|  | @ -1,23 +0,0 @@ | |||
| # frozen_string_literal: true | ||||
| 
 | ||||
| module Settings | ||||
|   module Exports | ||||
|     class BaseController < ApplicationController | ||||
|       before_action :authenticate_user! | ||||
| 
 | ||||
|       def index | ||||
|         @export = Export.new(current_account) | ||||
| 
 | ||||
|         respond_to do |format| | ||||
|           format.csv { send_data export_data, filename: export_filename } | ||||
|         end | ||||
|       end | ||||
| 
 | ||||
|       private | ||||
| 
 | ||||
|       def export_filename | ||||
|         "#{controller_name}.csv" | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  | @ -2,7 +2,13 @@ | |||
| 
 | ||||
| module Settings | ||||
|   module Exports | ||||
|     class BlockedAccountsController < BaseController | ||||
|     class BlockedAccountsController < ApplicationController | ||||
|       include ExportControllerConcern | ||||
| 
 | ||||
|       def index | ||||
|         send_export_file | ||||
|       end | ||||
| 
 | ||||
|       private | ||||
| 
 | ||||
|       def export_data | ||||
|  |  | |||
|  | @ -2,7 +2,13 @@ | |||
| 
 | ||||
| module Settings | ||||
|   module Exports | ||||
|     class FollowingAccountsController < BaseController | ||||
|     class FollowingAccountsController < ApplicationController | ||||
|       include ExportControllerConcern | ||||
| 
 | ||||
|       def index | ||||
|         send_export_file | ||||
|       end | ||||
| 
 | ||||
|       private | ||||
| 
 | ||||
|       def export_data | ||||
|  |  | |||
|  | @ -2,7 +2,13 @@ | |||
| 
 | ||||
| module Settings | ||||
|   module Exports | ||||
|     class MutedAccountsController < BaseController | ||||
|     class MutedAccountsController < ApplicationController | ||||
|       include ExportControllerConcern | ||||
| 
 | ||||
|       def index | ||||
|         send_export_file | ||||
|       end | ||||
| 
 | ||||
|       private | ||||
| 
 | ||||
|       def export_data | ||||
|  |  | |||
|  | @ -2,8 +2,12 @@ | |||
| 
 | ||||
| require 'rails_helper' | ||||
| 
 | ||||
| describe Settings::Exports::BaseController do | ||||
| describe ApplicationController, type: :controller do | ||||
|   controller do | ||||
|     include ExportControllerConcern | ||||
|     def index | ||||
|       send_export_file | ||||
|     end | ||||
|     def export_data | ||||
|       @export.account.username | ||||
|     end | ||||
|  | @ -17,7 +21,7 @@ describe Settings::Exports::BaseController do | |||
| 
 | ||||
|       expect(response).to have_http_status(:success) | ||||
|       expect(response.content_type).to eq 'text/csv' | ||||
|       expect(response.headers['Content-Disposition']).to eq 'attachment; filename="base.csv"' | ||||
|       expect(response.headers['Content-Disposition']).to eq 'attachment; filename="anonymous.csv"' | ||||
|       expect(response.body).to eq user.account.username | ||||
|     end | ||||
| 
 | ||||
		Loading…
	
		Reference in a new issue