Remove exports/base controller in favor of shared concern (#3444)
This commit is contained in:
		
				
					committed by
					
						
						Eugen Rochko
					
				
			
			
				
	
			
			
			
						parent
						
							23081bb299
						
					
				
				
					commit
					0ebe7d6d23
				
			
							
								
								
									
										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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Reference in New Issue
	
	Block a user