]> source.dussan.org Git - redmine.git/commitdiff
Fix import with issue relations and invalid issues hangs without any error message...
authorMarius Balteanu <marius.balteanu@zitec.com>
Sun, 20 Feb 2022 18:12:42 +0000 (18:12 +0000)
committerMarius Balteanu <marius.balteanu@zitec.com>
Sun, 20 Feb 2022 18:12:42 +0000 (18:12 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@21422 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/issue_import.rb
test/fixtures/files/import_issues_with_relation_and_invalid_issues.csv [new file with mode: 0644]
test/unit/issue_import_test.rb

index eb8a599ff1b72c420a07cf3d8257e5c1fefe5113..d1fc98521374763c29140761b3b3a0d11e28d783 100644 (file)
@@ -286,7 +286,11 @@ class IssueImport < Import
 
           relation.delay = decl[:delay] if decl[:delay]
 
-          relation.save!
+          begin
+            relation.save!
+          rescue
+            nil
+          end
         end
       end
     end
diff --git a/test/fixtures/files/import_issues_with_relation_and_invalid_issues.csv b/test/fixtures/files/import_issues_with_relation_and_invalid_issues.csv
new file mode 100644 (file)
index 0000000..45c901c
--- /dev/null
@@ -0,0 +1,6 @@
+row;tracker;subject;status;related to;
+1;Feature request;Issue 1;New;;
+2;Feature request;Issue 2;New;1;
+3;Feature request;;New;;This issue failes to import
+4;Feature request;Issue 4;New;3;This import failes to reate the relationsip - import hangs
+5;Feature request;Issue 5;New;;
index 79038ace49b7c0f082785bd526c88e9d4b407dac..bb0fa96ecbbbf073278e7520e1c54071b59f6225 100644 (file)
@@ -273,6 +273,28 @@ class IssueImportTest < ActiveSupport::TestCase
     assert_equal Date.new(2020, 2, 3), third.due_date
   end
 
+  def test_import_with_relations_and_invalid_issue_should_not_fail
+    import = generate_import_with_mapping('import_issues_with_relation_and_invalid_issues.csv')
+    import.settings['mapping'] = {
+      'project_id' => '1',
+
+      'tracker'          => '1',
+      'subject'          => '2',
+      'status'           => '3',
+      'relation_relates' => '4',
+    }
+    import.save!
+
+    first, second, third, fourth = new_records(Issue, 4) {import.run}
+
+    assert_equal 1, import.unsaved_items.count
+    item = import.unsaved_items.first
+    assert_include "Subject cannot be blank", item.message
+
+    assert_equal 1, first.relations_from.count
+    assert_equal 1, second.relations_to.count
+  end
+
   def test_assignee_should_be_set
     import = generate_import_with_mapping
     import.mapping['assigned_to'] = '11'