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 Settings | ||||||
|   module Exports |   module Exports | ||||||
|     class BlockedAccountsController < BaseController |     class BlockedAccountsController < ApplicationController | ||||||
|  |       include ExportControllerConcern | ||||||
|  | 
 | ||||||
|  |       def index | ||||||
|  |         send_export_file | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|       private |       private | ||||||
| 
 | 
 | ||||||
|       def export_data |       def export_data | ||||||
|  |  | ||||||
|  | @ -2,7 +2,13 @@ | ||||||
| 
 | 
 | ||||||
| module Settings | module Settings | ||||||
|   module Exports |   module Exports | ||||||
|     class FollowingAccountsController < BaseController |     class FollowingAccountsController < ApplicationController | ||||||
|  |       include ExportControllerConcern | ||||||
|  | 
 | ||||||
|  |       def index | ||||||
|  |         send_export_file | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|       private |       private | ||||||
| 
 | 
 | ||||||
|       def export_data |       def export_data | ||||||
|  |  | ||||||
|  | @ -2,7 +2,13 @@ | ||||||
| 
 | 
 | ||||||
| module Settings | module Settings | ||||||
|   module Exports |   module Exports | ||||||
|     class MutedAccountsController < BaseController |     class MutedAccountsController < ApplicationController | ||||||
|  |       include ExportControllerConcern | ||||||
|  | 
 | ||||||
|  |       def index | ||||||
|  |         send_export_file | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|       private |       private | ||||||
| 
 | 
 | ||||||
|       def export_data |       def export_data | ||||||
|  |  | ||||||
|  | @ -2,8 +2,12 @@ | ||||||
| 
 | 
 | ||||||
| require 'rails_helper' | require 'rails_helper' | ||||||
| 
 | 
 | ||||||
| describe Settings::Exports::BaseController do | describe ApplicationController, type: :controller do | ||||||
|   controller do |   controller do | ||||||
|  |     include ExportControllerConcern | ||||||
|  |     def index | ||||||
|  |       send_export_file | ||||||
|  |     end | ||||||
|     def export_data |     def export_data | ||||||
|       @export.account.username |       @export.account.username | ||||||
|     end |     end | ||||||
|  | @ -17,7 +21,7 @@ describe Settings::Exports::BaseController do | ||||||
| 
 | 
 | ||||||
|       expect(response).to have_http_status(:success) |       expect(response).to have_http_status(:success) | ||||||
|       expect(response.content_type).to eq 'text/csv' |       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 |       expect(response.body).to eq user.account.username | ||||||
|     end |     end | ||||||
| 
 | 
 | ||||||
		Loading…
	
		Reference in a new issue