diff --git a/app/controllers/admin/blocked_domains_controller.rb b/app/controllers/admin/blocked_domains_controller.rb
index bf5359b82..bd9acd14a 100644
--- a/app/controllers/admin/blocked_domains_controller.rb
+++ b/app/controllers/admin/blocked_domains_controller.rb
@@ -8,6 +8,18 @@ module Admin
@q = domains.search(params[:q])
@domains = @q.result.page(params[:page])
@domains = @domains.per(params[:results_per_page]) if params[:results_per_page].to_i.positive?
+
+ respond_to do |format|
+ format.html do
+ render 'admin/blocked_domains/index'
+ end
+ format.csv do
+ raw_csv = @q.result.to_csv
+ send_data raw_csv,
+ filename: "blocked_domains_#{Time.zone.now.to_formatted_s(:number)}.csv",
+ type: "#{Mime[:csv]}; charset=utf-8"
+ end
+ end
end
def new
diff --git a/app/controllers/admin/contact_versions_controller.rb b/app/controllers/admin/contact_versions_controller.rb
index 9638b341f..629e7edc7 100644
--- a/app/controllers/admin/contact_versions_controller.rb
+++ b/app/controllers/admin/contact_versions_controller.rb
@@ -28,6 +28,17 @@ module Admin
@versions = @q.result.page(params[:page])
@versions = @versions.per(params[:results_per_page]) if params[:results_per_page].to_i.positive?
+ respond_to do |format|
+ format.html do
+ render 'admin/contact_versions/index'
+ end
+ format.csv do
+ raw_csv = @q.result.to_csv
+ send_data raw_csv,
+ filename: "contact_history_#{Time.zone.now.to_formatted_s(:number)}.csv",
+ type: "#{Mime[:csv]}; charset=utf-8"
+ end
+ end
end
def show
diff --git a/app/controllers/admin/contacts_controller.rb b/app/controllers/admin/contacts_controller.rb
index e008a05ae..37e2acbc9 100644
--- a/app/controllers/admin/contacts_controller.rb
+++ b/app/controllers/admin/contacts_controller.rb
@@ -24,6 +24,18 @@ module Admin
end
@contacts = @contacts.per(params[:results_per_page]) if params[:results_per_page].to_i.positive?
+
+ respond_to do |format|
+ format.html do
+ @contacts
+ end
+ format.csv do
+ raw_csv = @q.result.distinct.to_csv
+ send_data raw_csv,
+ filename: "contacts_#{Time.zone.now.to_formatted_s(:number)}.csv",
+ type: "#{Mime[:csv]}; charset=utf-8"
+ end
+ end
end
def filter_by_flags(contacts)
diff --git a/app/controllers/admin/disputes_controller.rb b/app/controllers/admin/disputes_controller.rb
index 62e0c69b6..fa184b345 100644
--- a/app/controllers/admin/disputes_controller.rb
+++ b/app/controllers/admin/disputes_controller.rb
@@ -10,6 +10,18 @@ module Admin
params[:q] ||= {}
@disputes = sortable_dispute_query_for(Dispute.active.all, params[:q])
@closed_disputes = sortable_dispute_query_for(Dispute.closed.all, params[:q], closed: true)
+
+ respond_to do |format|
+ format.html do
+ render 'admin/disputes/index'
+ end
+ format.csv do
+ raw_csv = @q.result.to_csv
+ send_data raw_csv,
+ filename: "disputes_#{Time.zone.now.to_formatted_s(:number)}.csv",
+ type: "#{Mime[:csv]}; charset=utf-8"
+ end
+ end
end
# GET /admin/disputes/1
diff --git a/app/controllers/admin/domain_versions_controller.rb b/app/controllers/admin/domain_versions_controller.rb
index 0240875ec..b7f321fee 100644
--- a/app/controllers/admin/domain_versions_controller.rb
+++ b/app/controllers/admin/domain_versions_controller.rb
@@ -44,7 +44,18 @@ module Admin
@q = versions.search(params[:q])
@versions = @q.result.page(params[:page])
@versions = @versions.per(params[:results_per_page]) if params[:results_per_page].to_i.positive?
- render "admin/domain_versions/archive"
+
+ respond_to do |format|
+ format.html do
+ render 'admin/domain_versions/archive'
+ end
+ format.csv do
+ raw_csv = @q.result.to_csv
+ send_data raw_csv,
+ filename: "domain_history_#{Time.zone.now.to_formatted_s(:number)}.csv",
+ type: "#{Mime[:csv]}; charset=utf-8"
+ end
+ end
end
def show
diff --git a/app/controllers/admin/epp_logs_controller.rb b/app/controllers/admin/epp_logs_controller.rb
index 1a7602b90..3f7975b9e 100644
--- a/app/controllers/admin/epp_logs_controller.rb
+++ b/app/controllers/admin/epp_logs_controller.rb
@@ -13,6 +13,18 @@ module Admin
@epp_logs = @epp_logs.page(params[:page])
@count = @q.result.count
@epp_logs = @epp_logs.per(params[:results_per_page]) if paginate?
+
+ respond_to do |format|
+ format.html do
+ render 'admin/epp_logs/index'
+ end
+ format.csv do
+ raw_csv = @q.result.to_csv
+ send_data raw_csv,
+ filename: "epp_logs_#{Time.zone.now.to_formatted_s(:number)}.csv",
+ type: "#{Mime[:csv]}; charset=utf-8"
+ end
+ end
end
def show
diff --git a/app/controllers/admin/repp_logs_controller.rb b/app/controllers/admin/repp_logs_controller.rb
index 0bbd15dbe..f6eabafeb 100644
--- a/app/controllers/admin/repp_logs_controller.rb
+++ b/app/controllers/admin/repp_logs_controller.rb
@@ -13,6 +13,18 @@ module Admin
@repp_logs = @repp_logs.page(params[:page])
@count = @q.result.count
@repp_logs = @repp_logs.per(params[:results_per_page]) if paginate?
+
+ respond_to do |format|
+ format.html do
+ render 'admin/repp_logs/index'
+ end
+ format.csv do
+ raw_csv = @q.result.to_csv
+ send_data raw_csv,
+ filename: "repp_logs_#{Time.zone.now.to_formatted_s(:number)}.csv",
+ type: "#{Mime[:csv]}; charset=utf-8"
+ end
+ end
end
def show
diff --git a/app/controllers/admin/reserved_domains_controller.rb b/app/controllers/admin/reserved_domains_controller.rb
index 78d752866..aafe334f2 100644
--- a/app/controllers/admin/reserved_domains_controller.rb
+++ b/app/controllers/admin/reserved_domains_controller.rb
@@ -9,6 +9,18 @@ module Admin
@q = domains.search(params[:q])
@domains = @q.result.page(params[:page])
@domains = @domains.per(params[:results_per_page]) if params[:results_per_page].to_i.positive?
+
+ respond_to do |format|
+ format.html do
+ render 'admin/reserved_domains/index'
+ end
+ format.csv do
+ raw_csv = @q.result.to_csv
+ send_data raw_csv,
+ filename: "reserved_domains_#{Time.zone.now.to_formatted_s(:number)}.csv",
+ type: "#{Mime[:csv]}; charset=utf-8"
+ end
+ end
end
def new
diff --git a/app/lib/csv_report_helper.rb b/app/lib/csv_report_helper.rb
new file mode 100644
index 000000000..ac1e69623
--- /dev/null
+++ b/app/lib/csv_report_helper.rb
@@ -0,0 +1,10 @@
+module CsvReportHelper
+ def to_csv
+ CSV.generate do |csv|
+ csv << column_names
+ all.each do |item|
+ csv << item.attributes.values_at(*column_names)
+ end
+ end
+ end
+end
diff --git a/app/models/api_log/epp_log.rb b/app/models/api_log/epp_log.rb
index eb4aedcd9..6f4fe2644 100644
--- a/app/models/api_log/epp_log.rb
+++ b/app/models/api_log/epp_log.rb
@@ -1,4 +1,5 @@
module ApiLog
class EppLog < Db
+ extend CsvReportHelper
end
end
diff --git a/app/models/api_log/repp_log.rb b/app/models/api_log/repp_log.rb
index 6bd82956b..f983c8c99 100644
--- a/app/models/api_log/repp_log.rb
+++ b/app/models/api_log/repp_log.rb
@@ -1,4 +1,5 @@
module ApiLog
class ReppLog < Db
+ extend CsvReportHelper
end
end
diff --git a/app/models/blocked_domain.rb b/app/models/blocked_domain.rb
index f4e18bffc..9804e999e 100644
--- a/app/models/blocked_domain.rb
+++ b/app/models/blocked_domain.rb
@@ -1,5 +1,6 @@
class BlockedDomain < ApplicationRecord
include Versions
+ extend CsvReportHelper
before_save :generate_data
after_destroy :remove_data
diff --git a/app/models/dispute.rb b/app/models/dispute.rb
index f5a948355..ef9412cc0 100644
--- a/app/models/dispute.rb
+++ b/app/models/dispute.rb
@@ -1,4 +1,5 @@
class Dispute < ApplicationRecord
+ extend CsvReportHelper
include WhoisStatusPopulate
validates :domain_name, :password, :starts_at, :expires_at, presence: true
before_validation :fill_empty_passwords, :set_expiry_date
diff --git a/app/models/domain.rb b/app/models/domain.rb
index b150b1f8b..ba2fb114c 100644
--- a/app/models/domain.rb
+++ b/app/models/domain.rb
@@ -1,4 +1,5 @@
class Domain < ApplicationRecord
+ extend CsvReportHelper
include UserEvents
include Roids
include Versions # version/domain_version.rb
@@ -720,15 +721,6 @@ class Domain < ApplicationRecord
contacts.select(&:email_verification_failed?)&.map(&:email)&.uniq
end
- def self.to_csv
- CSV.generate do |csv|
- csv << column_names
- all.each do |domain|
- csv << domain.attributes.values_at(*column_names)
- end
- end
- end
-
def self.pdf(html)
kit = PDFKit.new(html)
kit.to_pdf
diff --git a/app/models/reserved_domain.rb b/app/models/reserved_domain.rb
index a45d06e83..ea8eab318 100644
--- a/app/models/reserved_domain.rb
+++ b/app/models/reserved_domain.rb
@@ -1,4 +1,5 @@
class ReservedDomain < ApplicationRecord
+ extend CsvReportHelper
include Versions # version/reserved_domain_version.rb
include WhoisStatusPopulate
before_save :fill_empty_passwords
diff --git a/app/models/version/contact_version.rb b/app/models/version/contact_version.rb
index 6c5c70a99..279566287 100644
--- a/app/models/version/contact_version.rb
+++ b/app/models/version/contact_version.rb
@@ -1,7 +1,7 @@
class Version::ContactVersion < PaperTrail::Version
+ extend CsvReportHelper
include VersionSession
+
self.table_name = :log_contacts
self.sequence_name = :log_contacts_id_seq
-
- # scope :deleted, -> { where(event: 'destroy') }
end
diff --git a/app/models/version/domain_version.rb b/app/models/version/domain_version.rb
index b2962d1ee..a9784f325 100644
--- a/app/models/version/domain_version.rb
+++ b/app/models/version/domain_version.rb
@@ -1,4 +1,5 @@
class Version::DomainVersion < PaperTrail::Version
+ extend CsvReportHelper
include VersionSession
self.table_name = :log_domains
diff --git a/app/views/admin/blocked_domains/index.haml b/app/views/admin/blocked_domains/index.haml
index e4bcedfc3..df6aa0747 100644
--- a/app/views/admin/blocked_domains/index.haml
+++ b/app/views/admin/blocked_domains/index.haml
@@ -23,11 +23,12 @@
.form-group
= label_tag t(:results_per_page)
= text_field_tag :results_per_page, params[:results_per_page], class: 'form-control', placeholder: t(:results_per_page)
- .col-md-3{style: 'padding-top: 25px;'}
+ .col-md-4{style: 'padding-top: 25px;'}
%button.btn.btn-primary
%span.glyphicon.glyphicon-search
+ = link_to(t('.csv_btn'), admin_blocked_domains_path(format: :csv, params: params.permit!), class: 'btn btn-default')
= link_to(t('.reset_btn'), admin_blocked_domains_path, class: 'btn btn-default')
%hr
.row
diff --git a/app/views/admin/contact_versions/index.haml b/app/views/admin/contact_versions/index.haml
index 8f293ba5d..67d903176 100644
--- a/app/views/admin/contact_versions/index.haml
+++ b/app/views/admin/contact_versions/index.haml
@@ -21,18 +21,19 @@
= label_tag :action
= select_tag '[q][event]', options_for_select([['Update', 'update'], ['Destroy', 'destroy'], ['Create', 'create']], params[:q][:event]), { include_blank:true, multiple: false, placeholder: t(:choose), class: 'form-control js-combobox' }
.row
- .col-md-3
- .col-md-3
- .col-md-3
- .form-group
- = label_tag t(:results_per_page)
- = text_field_tag :results_per_page, params[:results_per_page], class: 'form-control', placeholder: t(:results_per_page)
- .col-md-3{style: 'padding-top: 25px;'}
- %button.btn.btn-primary
-
- %span.glyphicon.glyphicon-search
-
- = link_to(t('.reset_btn'), admin_contact_versions_path, class: 'btn btn-default')
+ .col-md-3
+ .col-md-3
+ .col-md-3
+ .form-group
+ = label_tag t(:results_per_page)
+ = text_field_tag :results_per_page, params[:results_per_page], class: 'form-control', placeholder: t(:results_per_page)
+ .col-md-3{style: 'padding-top: 25px;float:right;padding-right: 0px;'}
+ %button.btn.btn-primary
+
+ %span.glyphicon.glyphicon-search
+
+ = link_to(t('.csv_btn'), admin_contact_versions_path(format: :csv, params: params.permit!), class: 'btn btn-default')
+ = link_to(t('.reset_btn'), admin_contact_versions_path, class: 'btn btn-default')
%hr
diff --git a/app/views/admin/contacts/index.haml b/app/views/admin/contacts/index.haml
index 6121bd0fe..ddab394cf 100644
--- a/app/views/admin/contacts/index.haml
+++ b/app/views/admin/contacts/index.haml
@@ -69,11 +69,12 @@
= check_box_tag :email_verification_failed, '1',params[:email_verification_failed].eql?('1'), style: 'width:auto;height:auto;float:right'
.row
- .col-md-3{style: 'padding-top: 25px;float:right;'}
+ .col-md-3{style: 'padding-top: 25px;float:right;padding-right: 0px'}
%button.btn.btn-primary
%span.glyphicon.glyphicon-search
+ = link_to(t('.csv_btn'), admin_contacts_path(format: :csv, params: params.permit!), class: 'btn btn-default')
= link_to(t('.reset_btn'), admin_contacts_path, class: 'btn btn-default')
%hr
.row
diff --git a/app/views/admin/disputes/index.html.erb b/app/views/admin/disputes/index.html.erb
index e32ddb730..72725cd66 100644
--- a/app/views/admin/disputes/index.html.erb
+++ b/app/views/admin/disputes/index.html.erb
@@ -32,12 +32,13 @@
<%= text_field_tag :results_per_page, params[:results_per_page], class: 'form-control', placeholder: t(:results_per_page) %>
-
+
+ <%= link_to(t('.csv_btn'), admin_disputes_path(format: :csv, params: params.permit!), class: 'btn btn-default') %>
<%= link_to(t('.reset_btn'), admin_disputes_path, class: 'btn btn-default') %>
diff --git a/app/views/admin/domain_versions/archive.haml b/app/views/admin/domain_versions/archive.haml
index 1fd4dad87..30312a9bd 100644
--- a/app/views/admin/domain_versions/archive.haml
+++ b/app/views/admin/domain_versions/archive.haml
@@ -27,11 +27,12 @@
.form-group
= label_tag t(:results_per_page)
= text_field_tag :results_per_page, params[:results_per_page], class: 'form-control', placeholder: t(:results_per_page)
- .col-md-3{style: 'padding-top: 25px;'}
+ .col-md-3{style: 'padding-top: 25px;float:right;padding-right: 0px;'}
%button.btn.btn-primary
%span.glyphicon.glyphicon-search
+ = link_to(t('.csv_btn'), admin_domain_versions_path(format: :csv, params: params.permit!), class: 'btn btn-default')
= link_to(t('.reset_btn'), admin_domain_versions_path, class: 'btn btn-default')
%hr
diff --git a/app/views/admin/epp_logs/index.haml b/app/views/admin/epp_logs/index.haml
index a6f0dae02..43596b317 100644
--- a/app/views/admin/epp_logs/index.haml
+++ b/app/views/admin/epp_logs/index.haml
@@ -36,11 +36,12 @@
.form-group
= f.label t(:created_before)
= f.search_field :created_at_lteq, value: params[:q][:created_at_lteq], class: 'form-control js-datepicker', placeholder: t(:created_before)
- .col-md-3{style: 'padding-top: 25px;'}
+ .col-md-3{style: 'padding-top: 25px;float:right;padding-right: 0px;'}
%button.btn.btn-primary
%span.glyphicon.glyphicon-search
+ = link_to(t('.csv_btn'), admin_epp_logs_path(format: :csv, params: params.permit!), class: 'btn btn-default')
= link_to(t('.reset_btn'), admin_epp_logs_path, class: 'btn btn-default')
.row
.col-md-12
@@ -49,6 +50,7 @@
.pull-right
.pagination
= t(:result_count, count: @count) if @count > 0
+ .row
.table-responsive
%table.table.table-hover.table-bordered.table-condensed
%thead
diff --git a/app/views/admin/repp_logs/index.haml b/app/views/admin/repp_logs/index.haml
index 061f892fb..b2aadcae3 100644
--- a/app/views/admin/repp_logs/index.haml
+++ b/app/views/admin/repp_logs/index.haml
@@ -35,11 +35,12 @@
.form-group
= f.label t(:created_before)
= f.search_field :created_at_lteq, value: params[:q][:created_at_lteq], class: 'form-control js-datepicker', placeholder: t(:created_before)
- .col-md-3{style: 'padding-top: 25px;'}
+ .col-md-3{style: 'padding-top: 25px;float:right;padding-right: 0px;'}
%button.btn.btn-primary
%span.glyphicon.glyphicon-search
+ = link_to(t('.csv_btn'), admin_repp_logs_path(format: :csv, params: params.permit!), class: 'btn btn-default')
= link_to(t('.reset_btn'), admin_repp_logs_path, class: 'btn btn-default')
%hr
.row
@@ -48,6 +49,7 @@
.pull-right
.pagination
= t(:result_count, count: @count) if @count > 0
+ .row
.table-responsive
%table.table.table-hover.table-bordered.table-condensed
%thead
diff --git a/app/views/admin/reserved_domains/index.haml b/app/views/admin/reserved_domains/index.haml
index 194cf8875..5444ba34d 100644
--- a/app/views/admin/reserved_domains/index.haml
+++ b/app/views/admin/reserved_domains/index.haml
@@ -23,11 +23,12 @@
.form-group
= label_tag t(:results_per_page)
= text_field_tag :results_per_page, params[:results_per_page], class: 'form-control', placeholder: t(:results_per_page)
- .col-md-3{style: 'padding-top: 25px;'}
+ .col-md-4{style: 'padding-top: 25px;'}
%button.btn.btn-primary
%span.glyphicon.glyphicon-search
+ = link_to(t('.csv_btn'), admin_reserved_domains_path(format: :csv, params: params.permit!), class: 'btn btn-default')
= link_to(t('.reset_btn'), admin_reserved_domains_path, class: 'btn btn-default')
%hr
.row
diff --git a/config/locales/admin/blocked_domains.en.yml b/config/locales/admin/blocked_domains.en.yml
index 3dac6fa5d..2eb66e39e 100644
--- a/config/locales/admin/blocked_domains.en.yml
+++ b/config/locales/admin/blocked_domains.en.yml
@@ -5,3 +5,4 @@ en:
title: Blocked domains
new_btn: New blocked domain
reset_btn: Reset
+ csv_btn: CSV
diff --git a/config/locales/admin/contact_versions.en.yml b/config/locales/admin/contact_versions.en.yml
index 89566ab9b..64062b7f7 100644
--- a/config/locales/admin/contact_versions.en.yml
+++ b/config/locales/admin/contact_versions.en.yml
@@ -3,3 +3,4 @@ en:
contact_versions:
index:
reset_btn: Reset
+ csv_btn: CSV
diff --git a/config/locales/admin/contacts.en.yml b/config/locales/admin/contacts.en.yml
index 44759886a..295e33ace 100644
--- a/config/locales/admin/contacts.en.yml
+++ b/config/locales/admin/contacts.en.yml
@@ -3,6 +3,7 @@ en:
contacts:
index:
reset_btn: Reset
+ csv_btn: CSV
edit:
new_status_btn: Add new status
diff --git a/config/locales/admin/disputes.en.yml b/config/locales/admin/disputes.en.yml
index b50ce12cc..4cb78d7e9 100644
--- a/config/locales/admin/disputes.en.yml
+++ b/config/locales/admin/disputes.en.yml
@@ -12,6 +12,7 @@ en:
title: Disputed domains
new_btn: New disputed domain
reset_btn: Reset
+ csv_btn: CSV
form:
password_hint: Generated automatically if left blank
diff --git a/config/locales/admin/domain_versions.en.yml b/config/locales/admin/domain_versions.en.yml
index 93111757c..8bb67bba4 100644
--- a/config/locales/admin/domain_versions.en.yml
+++ b/config/locales/admin/domain_versions.en.yml
@@ -3,6 +3,7 @@ en:
domain_versions:
archive:
reset_btn: Reset
+ csv_btn: CSV
registrant_placeholder: Registrant
registrant: Registrant
diff --git a/config/locales/admin/epp_logs.en.yml b/config/locales/admin/epp_logs.en.yml
index ee634b1d0..3a0600fd8 100644
--- a/config/locales/admin/epp_logs.en.yml
+++ b/config/locales/admin/epp_logs.en.yml
@@ -4,5 +4,6 @@ en:
index:
title: EPP log
reset_btn: Reset
+ csv_btn: CSV
show:
title: EPP log
diff --git a/config/locales/admin/repp_logs.en.yml b/config/locales/admin/repp_logs.en.yml
index 0a58fe7ba..978270df6 100644
--- a/config/locales/admin/repp_logs.en.yml
+++ b/config/locales/admin/repp_logs.en.yml
@@ -4,6 +4,7 @@ en:
index:
title: REPP log
reset_btn: Reset
+ csv_btn: CSV
show:
title: REPP log
diff --git a/config/locales/admin/reserved_domains.en.yml b/config/locales/admin/reserved_domains.en.yml
index cc1a3c4d7..e8ccebf1b 100644
--- a/config/locales/admin/reserved_domains.en.yml
+++ b/config/locales/admin/reserved_domains.en.yml
@@ -5,6 +5,7 @@ en:
title: Reserved domains
new_btn: New reserved domain
reset_btn: Reset
+ csv_btn: CSV
form:
password_hint: Generated automatically if left blank
diff --git a/test/integration/admin_area/blocked_domains_test.rb b/test/integration/admin_area/blocked_domains_test.rb
index 7df9d30e7..b4195240a 100644
--- a/test/integration/admin_area/blocked_domains_test.rb
+++ b/test/integration/admin_area/blocked_domains_test.rb
@@ -3,7 +3,7 @@ require 'application_system_test_case'
# /admin/blocked_domains
-class AdminAreaBlockedDomainsIntegrationTest < JavaScriptApplicationSystemTestCase
+class AdminAreaBlockedDomainsIntegrationTest < JavaScriptApplicationSystemTestCase
setup do
WebMock.allow_net_connect!
sign_in users(:admin)
@@ -48,6 +48,19 @@ class AdminAreaBlockedDomainsIntegrationTest < JavaScriptApplicationSystemTestCa
assert_text @domain.name
end
+ def test_download_blocked_domains
+ now = Time.zone.parse('2010-07-05 08:00')
+ travel_to now
+
+ get admin_blocked_domains_path(format: :csv)
+
+ assert_response :ok
+ assert_equal 'text/csv; charset=utf-8', response.headers['Content-Type']
+ assert_equal %(attachment; filename="blocked_domains_#{Time.zone.now.to_formatted_s(:number)}.csv"; filename*=UTF-8''blocked_domains_#{Time.zone.now.to_formatted_s(:number)}.csv),
+ response.headers['Content-Disposition']
+ assert_not_empty response.body
+ end
+
private
def visit_admin_blocked_domains_path
diff --git a/test/integration/admin_area/disputes_test.rb b/test/integration/admin_area/disputes_test.rb
index 3362b95ba..6a5fea960 100644
--- a/test/integration/admin_area/disputes_test.rb
+++ b/test/integration/admin_area/disputes_test.rb
@@ -70,4 +70,17 @@ class AdminDisputesSystemTest < ApplicationSystemTestCase
assert_text 'Dispute already exists for this domain at given timeframe'
end
+
+ def test_download_disputes
+ now = Time.zone.parse('2010-07-05 08:00')
+ travel_to now
+
+ get admin_disputes_path(format: :csv)
+
+ assert_response :ok
+ assert_equal 'text/csv; charset=utf-8', response.headers['Content-Type']
+ assert_equal %(attachment; filename="disputes_#{Time.zone.now.to_formatted_s(:number)}.csv"; filename*=UTF-8''disputes_#{Time.zone.now.to_formatted_s(:number)}.csv),
+ response.headers['Content-Disposition']
+ assert_not_empty response.body
+ end
end
diff --git a/test/integration/admin_area/epp_logs_test.rb b/test/integration/admin_area/epp_logs_test.rb
index 82c450fad..dc159511b 100644
--- a/test/integration/admin_area/epp_logs_test.rb
+++ b/test/integration/admin_area/epp_logs_test.rb
@@ -36,6 +36,19 @@ class AdminEppLogsIntegrationTest < ApplicationSystemTestCase
assert_match /#{date_now}/, epp_log_date
end
+ def test_download_epp_logs
+ now = Time.zone.parse('2010-07-05 08:00')
+ travel_to now
+
+ get admin_epp_logs_path(format: :csv)
+
+ assert_response :ok
+ assert_equal 'text/csv; charset=utf-8', response.headers['Content-Type']
+ assert_equal %(attachment; filename="epp_logs_#{Time.zone.now.to_formatted_s(:number)}.csv"; filename*=UTF-8''epp_logs_#{Time.zone.now.to_formatted_s(:number)}.csv),
+ response.headers['Content-Disposition']
+ assert_not_empty response.body
+ end
+
private
def send_epp_request_hello
diff --git a/test/integration/admin_area/repp_logs_test.rb b/test/integration/admin_area/repp_logs_test.rb
index 6630a6d57..24ab665f4 100644
--- a/test/integration/admin_area/repp_logs_test.rb
+++ b/test/integration/admin_area/repp_logs_test.rb
@@ -15,9 +15,22 @@ class AdminAreaReppLogsIntegrationTest < ApplicationSystemTestCase
visit admin_repp_logs_path
get repp_v1_contacts_path
visit admin_repp_logs_path
-
+
find(:xpath, "//tbody/tr/td/a", match: :first).click
assert_text 'REPP log'
end
+
+ def test_download_repp_logs
+ now = Time.zone.parse('2010-07-05 08:00')
+ travel_to now
+
+ get admin_repp_logs_path(format: :csv)
+
+ assert_response :ok
+ assert_equal 'text/csv; charset=utf-8', response.headers['Content-Type']
+ assert_equal %(attachment; filename="repp_logs_#{Time.zone.now.to_formatted_s(:number)}.csv"; filename*=UTF-8''repp_logs_#{Time.zone.now.to_formatted_s(:number)}.csv),
+ response.headers['Content-Disposition']
+ assert_not_empty response.body
+ end
end
diff --git a/test/integration/admin_area/reserved_domains_test.rb b/test/integration/admin_area/reserved_domains_test.rb
index c09c3723b..ba409a2f6 100644
--- a/test/integration/admin_area/reserved_domains_test.rb
+++ b/test/integration/admin_area/reserved_domains_test.rb
@@ -12,7 +12,7 @@ class AdminAreaReservedDomainsIntegrationTest < JavaScriptApplicationSystemTestC
end
def test_remove_reserved_domain
- visit admin_reserved_domains_path
+ visit admin_reserved_domains_path
click_link_or_button 'Delete', match: :first
page.driver.browser.switch_to.alert.accept
@@ -36,4 +36,17 @@ class AdminAreaReservedDomainsIntegrationTest < JavaScriptApplicationSystemTestC
assert_text 'Domain updated!'
end
+
+ def test_download_reserved_domains
+ now = Time.zone.parse('2010-07-05 08:00')
+ travel_to now
+
+ get admin_reserved_domains_path(format: :csv)
+
+ assert_response :ok
+ assert_equal 'text/csv; charset=utf-8', response.headers['Content-Type']
+ assert_equal %(attachment; filename="reserved_domains_#{Time.zone.now.to_formatted_s(:number)}.csv"; filename*=UTF-8''reserved_domains_#{Time.zone.now.to_formatted_s(:number)}.csv),
+ response.headers['Content-Disposition']
+ assert_not_empty response.body
+ end
end
diff --git a/test/system/admin_area/contact_versions_test.rb b/test/system/admin_area/contact_versions_test.rb
index 801353e28..f040646bb 100644
--- a/test/system/admin_area/contact_versions_test.rb
+++ b/test/system/admin_area/contact_versions_test.rb
@@ -26,7 +26,7 @@ class ContactVersionsTest < ApplicationSystemTestCase
VALUES ('Contact', 75, 'update', '1-AdminUser',
'{"id": 75, "code": "test_code", "auth_info": "8b4d462aa04194ca78840a", "registrar_id": #{@registrar.id}, "old_field": "value",
"legal_id": "123"}',
- '{"other_made_up_field": "value"}',
+ '{"other_made_up_field": "value"}',
'2018-04-23 15:50:48.113491', '2018-04-23 12:44:56',
'{"legal_documents":[null]}', null, null
)
@@ -56,4 +56,17 @@ class ContactVersionsTest < ApplicationSystemTestCase
assert_text 'Best Names'
assert_text '23.04.18, 18:50 update 1-AdminUser'
end
+
+ def test_download_contact_history
+ now = Time.zone.parse('2010-07-05 08:00')
+ travel_to now
+
+ get admin_contact_versions_path(format: :csv)
+
+ assert_response :ok
+ assert_equal 'text/csv; charset=utf-8', response.headers['Content-Type']
+ assert_equal %(attachment; filename="contact_history_#{Time.zone.now.to_formatted_s(:number)}.csv"; filename*=UTF-8''contact_history_#{Time.zone.now.to_formatted_s(:number)}.csv),
+ response.headers['Content-Disposition']
+ assert_not_empty response.body
+ end
end
diff --git a/test/system/admin_area/contacts_test.rb b/test/system/admin_area/contacts_test.rb
index ea37c7bc4..8fca6684b 100644
--- a/test/system/admin_area/contacts_test.rb
+++ b/test/system/admin_area/contacts_test.rb
@@ -39,4 +39,17 @@ class AdminContactsTest < ApplicationSystemTestCase
assert_text('Street Main Street City New York Postcode 12345 ' \
'State New York State Country United States of America')
end
+
+ def test_download_contacts
+ now = Time.zone.parse('2010-07-05 08:00')
+ travel_to now
+
+ get admin_contacts_path(format: :csv)
+
+ assert_response :ok
+ assert_equal 'text/csv; charset=utf-8', response.headers['Content-Type']
+ assert_equal %(attachment; filename="contacts_#{Time.zone.now.to_formatted_s(:number)}.csv"; filename*=UTF-8''contacts_#{Time.zone.now.to_formatted_s(:number)}.csv),
+ response.headers['Content-Disposition']
+ assert_not_empty response.body
+ end
end
diff --git a/test/system/admin_area/domain_versions_test.rb b/test/system/admin_area/domain_versions_test.rb
index 65f081fe4..e440b0935 100644
--- a/test/system/admin_area/domain_versions_test.rb
+++ b/test/system/admin_area/domain_versions_test.rb
@@ -88,6 +88,19 @@ class DomainVersionsTest < ApplicationSystemTestCase
'http://www.example.com/admin/domain_versions?q[name]=shop.test&q[registrant]=&q[registrar]=&q[event]=&results_per_page='
end
+ def test_download_domain_history
+ now = Time.zone.parse('2010-07-05 08:00')
+ travel_to now
+
+ get admin_domain_versions_path(format: :csv)
+
+ assert_response :ok
+ assert_equal 'text/csv; charset=utf-8', response.headers['Content-Type']
+ assert_equal %(attachment; filename="domain_history_#{Time.zone.now.to_formatted_s(:number)}.csv"; filename*=UTF-8''domain_history_#{Time.zone.now.to_formatted_s(:number)}.csv),
+ response.headers['Content-Disposition']
+ assert_not_empty response.body
+ end
+
def test_search_event_param
# TODO
end