##// END OF EJS Templates
Speeds up rendering of the project list for users who belong to hundreds of projects....
Speeds up rendering of the project list for users who belong to hundreds of projects. git-svn-id: http://svn.redmine.org/redmine/trunk@16123 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r15130:010f75714dcc
r15741:f8df935dcada
Show More
issue_import_test.rb
178 lines | 5.7 KiB | text/x-ruby | RubyLexer
/ test / unit / issue_import_test.rb
Jean-Philippe Lang
Import issues from CSV file (#950)....
r14111 # Redmine - project management software
Jean-Philippe Lang
Updates copyright for 2016....
r14856 # Copyright (C) 2006-2016 Jean-Philippe Lang
Jean-Philippe Lang
Import issues from CSV file (#950)....
r14111 #
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require File.expand_path('../../test_helper', __FILE__)
class IssueImportTest < ActiveSupport::TestCase
fixtures :projects, :enabled_modules,
:users, :email_addresses,
:roles, :members, :member_roles,
:issues, :issue_statuses,
:trackers, :projects_trackers,
:versions,
:issue_categories,
:enumerations,
:workflows,
:custom_fields,
:custom_values,
:custom_fields_projects,
:custom_fields_trackers
Jean-Philippe Lang
Include required module (#22951)....
r15130 include Redmine::I18n
Jean-Philippe Lang
Set default language in import tests (#22951)....
r15129 def setup
set_language_if_valid 'en'
end
Jean-Philippe Lang
Import issues from CSV file (#950)....
r14111 def test_create_versions_should_create_missing_versions
import = generate_import_with_mapping
import.mapping.merge!('fixed_version' => '9', 'create_versions' => '1')
import.save!
version = new_record(Version) do
assert_difference 'Issue.count', 3 do
import.run
end
end
assert_equal '2.1', version.name
end
def test_create_categories_should_create_missing_categories
import = generate_import_with_mapping
import.mapping.merge!('category' => '10', 'create_categories' => '1')
import.save!
category = new_record(IssueCategory) do
assert_difference 'Issue.count', 3 do
import.run
end
end
assert_equal 'New category', category.name
end
Jean-Philippe Lang
Make Tracker map-able for CSV import (#22951)....
r15108 def test_mapping_with_fixed_tracker
import = generate_import_with_mapping
import.mapping.merge!('tracker' => 'value:2')
import.save!
issues = new_records(Issue, 3) { import.run }
assert_equal [2], issues.map(&:tracker_id).uniq
end
def test_mapping_with_mapped_tracker
import = generate_import_with_mapping
import.mapping.merge!('tracker' => '13')
import.save!
issues = new_records(Issue, 3) { import.run }
assert_equal [1, 2, 1], issues.map(&:tracker_id)
end
def test_should_not_import_with_default_tracker_when_tracker_is_invalid
Tracker.find_by_name('Feature request').update!(:name => 'Feature')
import = generate_import_with_mapping
import.mapping.merge!('tracker' => '13')
import.save!
import.run
assert_equal 1, import.unsaved_items.count
item = import.unsaved_items.first
assert_include "Tracker cannot be blank", item.message
end
Jean-Philippe Lang
Make Status map-able for CSV import (#22951)....
r15111 def test_status_should_be_set
import = generate_import_with_mapping
import.mapping.merge!('status' => '14')
import.save!
issues = new_records(Issue, 3) { import.run }
assert_equal ['New', 'New', 'Assigned'], issues.map(&:status).map(&:name)
end
Jean-Philippe Lang
Import issues from CSV file (#950)....
r14111 def test_parent_should_be_set
import = generate_import_with_mapping
import.mapping.merge!('parent_issue_id' => '5')
import.save!
issues = new_records(Issue, 3) { import.run }
assert_nil issues[0].parent
assert_equal issues[0].id, issues[1].parent_id
assert_equal 2, issues[2].parent_id
end
Jean-Philippe Lang
Use same logic for finding user when importing a file (#950)....
r14119 def test_assignee_should_be_set
import = generate_import_with_mapping
import.mapping.merge!('assigned_to' => '11')
import.save!
issues = new_records(Issue, 3) { import.run }
assert_equal [User.find(3), nil, nil], issues.map(&:assigned_to)
end
Jean-Philippe Lang
Use same logic for finding user as a custom field (#950)....
r14121 def test_user_custom_field_should_be_set
field = IssueCustomField.generate!(:field_format => 'user', :is_for_all => true, :trackers => Tracker.all)
import = generate_import_with_mapping
import.mapping.merge!("cf_#{field.id}" => '11')
import.save!
issues = new_records(Issue, 3) { import.run }
assert_equal '3', issues.first.custom_field_value(field)
end
Jean-Philippe Lang
Import issues from CSV file (#950)....
r14111 def test_is_private_should_be_set_based_on_user_locale
import = generate_import_with_mapping
import.mapping.merge!('is_private' => '6')
import.save!
issues = new_records(Issue, 3) { import.run }
assert_equal [false, true, false], issues.map(&:is_private)
end
Jean-Philippe Lang
Adds support for custom date format when importing a CSV file (#950)....
r14113 def test_dates_should_be_parsed_using_date_format_setting
field = IssueCustomField.generate!(:field_format => 'date', :is_for_all => true, :trackers => Tracker.all)
import = generate_import_with_mapping('import_dates.csv')
import.settings.merge!('date_format' => Import::DATE_FORMATS[1])
Jean-Philippe Lang
Make Tracker map-able for CSV import (#22951)....
r15108 import.mapping.merge!('tracker' => 'value:1', 'subject' => '0', 'start_date' => '1', 'due_date' => '2', "cf_#{field.id}" => '3')
Jean-Philippe Lang
Adds support for custom date format when importing a CSV file (#950)....
r14113 import.save!
issue = new_record(Issue) { import.run } # only 1 valid issue
assert_equal "Valid dates", issue.subject
assert_equal Date.parse('2015-07-10'), issue.start_date
assert_equal Date.parse('2015-08-12'), issue.due_date
assert_equal '2015-07-14', issue.custom_field_value(field)
end
Jean-Philippe Lang
Set default date format based on user locale (#950)....
r14114 def test_date_format_should_default_to_user_language
user = User.generate!(:language => 'fr')
import = Import.new
import.user = user
assert_nil import.settings['date_format']
import.set_default_settings
assert_equal '%d/%m/%Y', import.settings['date_format']
end
Jean-Philippe Lang
Import issues from CSV file (#950)....
r14111 def test_run_should_remove_the_file
import = generate_import_with_mapping
file_path = import.filepath
assert File.exists?(file_path)
import.run
assert !File.exists?(file_path)
end
end