summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Jankowski <mjankowski@thoughtbot.com>2017-05-30 13:06:01 -0400
committerEugen Rochko <eugen@zeonfederated.com>2017-05-30 19:06:01 +0200
commit0ebe7d6d236d47bf805a920dc722897bafec7459 (patch)
treee3f08f8d34ef2ea58978e528f53518f864c04c71
parent23081bb2994b34108fb06e15d3101849a3077cf9 (diff)
Remove exports/base controller in favor of shared concern (#3444)
-rw-r--r--app/controllers/concerns/export_controller_concern.rb30
-rw-r--r--app/controllers/settings/exports/base_controller.rb23
-rw-r--r--app/controllers/settings/exports/blocked_accounts_controller.rb8
-rw-r--r--app/controllers/settings/exports/following_accounts_controller.rb8
-rw-r--r--app/controllers/settings/exports/muted_accounts_controller.rb8
-rw-r--r--spec/controllers/concerns/export_controller_concern_spec.rb (renamed from spec/controllers/settings/exports/base_controller_spec.rb)8
6 files changed, 57 insertions, 28 deletions
diff --git a/app/controllers/concerns/export_controller_concern.rb b/app/controllers/concerns/export_controller_concern.rb
new file mode 100644
index 00000000000..e20b71a3039
--- /dev/null
+++ b/app/controllers/concerns/export_controller_concern.rb
@@ -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
diff --git a/app/controllers/settings/exports/base_controller.rb b/app/controllers/settings/exports/base_controller.rb
deleted file mode 100644
index c082ed806c4..00000000000
--- a/app/controllers/settings/exports/base_controller.rb
+++ /dev/null
@@ -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
diff --git a/app/controllers/settings/exports/blocked_accounts_controller.rb b/app/controllers/settings/exports/blocked_accounts_controller.rb
index f1115b21e31..2092104e01d 100644
--- a/app/controllers/settings/exports/blocked_accounts_controller.rb
+++ b/app/controllers/settings/exports/blocked_accounts_controller.rb
@@ -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
diff --git a/app/controllers/settings/exports/following_accounts_controller.rb b/app/controllers/settings/exports/following_accounts_controller.rb
index 0011d2463a1..74281ddca26 100644
--- a/app/controllers/settings/exports/following_accounts_controller.rb
+++ b/app/controllers/settings/exports/following_accounts_controller.rb
@@ -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
diff --git a/app/controllers/settings/exports/muted_accounts_controller.rb b/app/controllers/settings/exports/muted_accounts_controller.rb
index dfe72cfcb9e..e511619ca6a 100644
--- a/app/controllers/settings/exports/muted_accounts_controller.rb
+++ b/app/controllers/settings/exports/muted_accounts_controller.rb
@@ -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
diff --git a/spec/controllers/settings/exports/base_controller_spec.rb b/spec/controllers/concerns/export_controller_concern_spec.rb
index c924d449aed..9d6f782b99b 100644
--- a/spec/controllers/settings/exports/base_controller_spec.rb
+++ b/spec/controllers/concerns/export_controller_concern_spec.rb
@@ -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