summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/imports_controller.rb6
-rw-r--r--config/locales/en.yml1
-rw-r--r--test/fixtures/files/import_issues_no_data_row.csv1
-rw-r--r--test/functional/imports_controller_test.rb21
4 files changed, 28 insertions, 1 deletions
diff --git a/app/controllers/imports_controller.rb b/app/controllers/imports_controller.rb
index 721d08fa2..612bab97b 100644
--- a/app/controllers/imports_controller.rb
+++ b/app/controllers/imports_controller.rb
@@ -50,7 +50,11 @@ class ImportsController < ApplicationController
def settings
if request.post? && @import.parse_file
- redirect_to import_mapping_path(@import)
+ if @import.total_items == 0
+ flash.now[:error] = l(:error_no_data_in_file)
+ else
+ redirect_to import_mapping_path(@import)
+ end
end
rescue CSV::MalformedCSVError, EncodingError => e
diff --git a/config/locales/en.yml b/config/locales/en.yml
index d89d39ebc..0aeafe516 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -223,6 +223,7 @@ en:
error_invalid_file_encoding: "The file is not a valid %{encoding} encoded file"
error_invalid_csv_file_or_settings: "The file is not a CSV file or does not match the settings below (%{value})"
error_can_not_read_import_file: "An error occurred while reading the file to import"
+ error_no_data_in_file: "The file does not contain any data"
error_attachment_extension_not_allowed: "Attachment extension %{extension} is not allowed"
error_ldap_bind_credentials: "Invalid LDAP Account/Password"
error_no_tracker_allowed_for_new_issue_in_project: "The project doesn't have any trackers for which you can create an issue"
diff --git a/test/fixtures/files/import_issues_no_data_row.csv b/test/fixtures/files/import_issues_no_data_row.csv
new file mode 100644
index 000000000..269117bba
--- /dev/null
+++ b/test/fixtures/files/import_issues_no_data_row.csv
@@ -0,0 +1 @@
+priority;Subject;start_date;parent;private;progress;custom;"target version";category;user;estimated_hours;tracker;status;database;cf_6;
diff --git a/test/functional/imports_controller_test.rb b/test/functional/imports_controller_test.rb
index fa1229791..f87fd029f 100644
--- a/test/functional/imports_controller_test.rb
+++ b/test/functional/imports_controller_test.rb
@@ -180,6 +180,27 @@ class ImportsControllerTest < Redmine::ControllerTest
assert_select 'div#flash_error', /The file is not a CSV file or does not match the settings below \([[:print:]]+\)/
end
+ def test_post_settings_with_no_data_row_should_display_error
+ import = generate_import('import_issues_no_data_row.csv')
+
+ post(
+ :settings,
+ :params => {
+ :id => import.to_param,
+ :import_settings => {
+ :separator => ';',
+ :wrapper => '"',
+ :encoding => 'ISO-8859-1'
+ }
+ }
+ )
+ assert_response 200
+ import.reload
+ assert_equal 0, import.total_items
+
+ assert_select 'div#flash_error', /The file does not contain any data/
+ end
+
def test_get_mapping_should_display_mapping_form
import = generate_import('import_iso8859-1.csv')
import.settings = {'separator' => ";", 'wrapper' => '"', 'encoding' => "ISO-8859-1"}