about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatt Jankowski <mjankowski@thoughtbot.com>2017-04-13 07:02:02 -0400
committerEugen <eugen@zeonfederated.com>2017-04-13 13:02:02 +0200
commit0e39cc6a35661416a1f1ccb8841863f7bf307020 (patch)
tree7905b859d61ff98ca63a66eb86c50da4834e9c89
parentfaefd8ec8f164e174fd887f06d01c7fe8ed05531 (diff)
Settings export refactor (#1646)
* Refactor Export to take an account and know about the export types

* Use Export instance in settings/exports#show
-rw-r--r--app/controllers/settings/exports/base_controller.rb2
-rw-r--r--app/controllers/settings/exports/blocked_accounts_controller.rb4
-rw-r--r--app/controllers/settings/exports/following_accounts_controller.rb4
-rw-r--r--app/controllers/settings/exports/muted_accounts_controller.rb4
-rw-r--r--app/controllers/settings/exports_controller.rb5
-rw-r--r--app/models/export.rb38
-rw-r--r--app/views/settings/exports/show.html.haml8
-rw-r--r--spec/controllers/settings/exports_controller_spec.rb3
8 files changed, 49 insertions, 19 deletions
diff --git a/app/controllers/settings/exports/base_controller.rb b/app/controllers/settings/exports/base_controller.rb
index 0b790959f..c082ed806 100644
--- a/app/controllers/settings/exports/base_controller.rb
+++ b/app/controllers/settings/exports/base_controller.rb
@@ -6,7 +6,7 @@ module Settings
       before_action :authenticate_user!
 
       def index
-        export_data = Export.new(export_accounts).to_csv
+        @export = Export.new(current_account)
 
         respond_to do |format|
           format.csv { send_data export_data, filename: export_filename }
diff --git a/app/controllers/settings/exports/blocked_accounts_controller.rb b/app/controllers/settings/exports/blocked_accounts_controller.rb
index 9c4bcaa53..f1115b21e 100644
--- a/app/controllers/settings/exports/blocked_accounts_controller.rb
+++ b/app/controllers/settings/exports/blocked_accounts_controller.rb
@@ -5,8 +5,8 @@ module Settings
     class BlockedAccountsController < BaseController
       private
 
-      def export_accounts
-        current_account.blocking
+      def export_data
+        @export.to_blocked_accounts_csv
       end
     end
   end
diff --git a/app/controllers/settings/exports/following_accounts_controller.rb b/app/controllers/settings/exports/following_accounts_controller.rb
index 8d06bcc95..0011d2463 100644
--- a/app/controllers/settings/exports/following_accounts_controller.rb
+++ b/app/controllers/settings/exports/following_accounts_controller.rb
@@ -5,8 +5,8 @@ module Settings
     class FollowingAccountsController < BaseController
       private
 
-      def export_accounts
-        current_account.following
+      def export_data
+        @export.to_following_accounts_csv
       end
     end
   end
diff --git a/app/controllers/settings/exports/muted_accounts_controller.rb b/app/controllers/settings/exports/muted_accounts_controller.rb
index a77a9af6d..dfe72cfcb 100644
--- a/app/controllers/settings/exports/muted_accounts_controller.rb
+++ b/app/controllers/settings/exports/muted_accounts_controller.rb
@@ -5,8 +5,8 @@ module Settings
     class MutedAccountsController < BaseController
       private
 
-      def export_accounts
-        current_account.muting
+      def export_data
+        @export.to_muted_accounts_csv
       end
     end
   end
diff --git a/app/controllers/settings/exports_controller.rb b/app/controllers/settings/exports_controller.rb
index 77dea3231..ae62f00c1 100644
--- a/app/controllers/settings/exports_controller.rb
+++ b/app/controllers/settings/exports_controller.rb
@@ -6,9 +6,6 @@ class Settings::ExportsController < ApplicationController
   before_action :authenticate_user!
 
   def show
-    @total_storage = current_account.media_attachments.sum(:file_file_size)
-    @total_follows = current_account.following.count
-    @total_blocks  = current_account.blocking.count
-    @total_mutes = current_account.muting.count
+    @export = Export.new(current_account)
   end
 end
diff --git a/app/models/export.rb b/app/models/export.rb
index cd1a58eb6..f0d5dd255 100644
--- a/app/models/export.rb
+++ b/app/models/export.rb
@@ -2,13 +2,43 @@
 require 'csv'
 
 class Export
-  attr_reader :accounts
+  attr_reader :account
 
-  def initialize(accounts)
-    @accounts = accounts
+  def initialize(account)
+    @account = account
   end
 
-  def to_csv
+  def to_blocked_accounts_csv
+    to_csv account.blocking
+  end
+
+  def to_muted_accounts_csv
+    to_csv account.muting
+  end
+
+  def to_following_accounts_csv
+    to_csv account.following
+  end
+
+  def total_storage
+    account.media_attachments.sum(:file_file_size)
+  end
+
+  def total_follows
+    account.following.count
+  end
+
+  def total_blocks
+    account.blocking.count
+  end
+
+  def total_mutes
+    account.muting.count
+  end
+
+  private
+
+  def to_csv(accounts)
     CSV.generate do |csv|
       accounts.each do |account|
         csv << [(account.local? ? account.local_username_and_domain : account.acct)]
diff --git a/app/views/settings/exports/show.html.haml b/app/views/settings/exports/show.html.haml
index 51be40fb6..f2f6f9556 100644
--- a/app/views/settings/exports/show.html.haml
+++ b/app/views/settings/exports/show.html.haml
@@ -5,17 +5,17 @@
   %tbody
     %tr
       %th= t('exports.storage')
-      %td= number_to_human_size @total_storage
+      %td= number_to_human_size @export.total_storage
       %td
     %tr
       %th= t('exports.follows')
-      %td= @total_follows
+      %td= @export.total_follows
       %td= table_link_to 'download', t('exports.csv'), settings_exports_follows_path(format: :csv)
     %tr
       %th= t('exports.blocks')
-      %td= @total_blocks
+      %td= @export.total_blocks
       %td= table_link_to 'download', t('exports.csv'), settings_exports_blocks_path(format: :csv)
     %tr
       %th= t('exports.mutes')
-      %td= @total_mutes
+      %td= @export.total_mutes
       %td= table_link_to 'download', t('exports.csv'), settings_exports_mutes_path(format: :csv)
diff --git a/spec/controllers/settings/exports_controller_spec.rb b/spec/controllers/settings/exports_controller_spec.rb
index ff98f3ad9..2be6e4744 100644
--- a/spec/controllers/settings/exports_controller_spec.rb
+++ b/spec/controllers/settings/exports_controller_spec.rb
@@ -1,6 +1,8 @@
 require 'rails_helper'
 
 describe Settings::ExportsController do
+  render_views
+
   before do
     sign_in Fabricate(:user), scope: :user
   end
@@ -8,6 +10,7 @@ describe Settings::ExportsController do
   describe 'GET #show' do
     it 'returns http success' do
       get :show
+
       expect(response).to have_http_status(:success)
     end
   end