Fixed issue #1095 - Zendesk import: Error while importing ticket field with dash in name.
This commit is contained in:
parent
329ab853a2
commit
2bbb2c9519
3 changed files with 67 additions and 19 deletions
|
@ -15,8 +15,7 @@ module Import
|
||||||
private
|
private
|
||||||
|
|
||||||
def local_name(object_field)
|
def local_name(object_field)
|
||||||
return @local_name if @local_name
|
@local_name ||= remote_name(object_field).gsub(%r{[\s\/]}, '_').underscore.gsub(/_{2,}/, '_')
|
||||||
@local_name = remote_name(object_field).gsub(/\s/, '_').downcase
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def remote_name(object_field)
|
def remote_name(object_field)
|
||||||
|
@ -28,7 +27,7 @@ module Import
|
||||||
end
|
end
|
||||||
|
|
||||||
def backend_class(object_field)
|
def backend_class(object_field)
|
||||||
"Import::Zendesk::ObjectAttribute::#{object_field.type .capitalize}".constantize
|
"Import::Zendesk::ObjectAttribute::#{object_field.type.capitalize}".constantize
|
||||||
end
|
end
|
||||||
|
|
||||||
def object_name
|
def object_name
|
||||||
|
|
|
@ -3,4 +3,32 @@ require 'lib/import/zendesk/object_field_examples'
|
||||||
|
|
||||||
RSpec.describe Import::Zendesk::TicketField do
|
RSpec.describe Import::Zendesk::TicketField do
|
||||||
it_behaves_like 'Import::Zendesk::ObjectField'
|
it_behaves_like 'Import::Zendesk::ObjectField'
|
||||||
|
|
||||||
|
it 'handles fields with dashes in title' do
|
||||||
|
|
||||||
|
zendesk_object = double(
|
||||||
|
id: 1337,
|
||||||
|
title: 'Priority - Simple',
|
||||||
|
key: 'priority_simple',
|
||||||
|
type: 'text',
|
||||||
|
removable: true,
|
||||||
|
active: true,
|
||||||
|
position: 1,
|
||||||
|
required_in_portal: true,
|
||||||
|
visible_in_portal: true,
|
||||||
|
required: true,
|
||||||
|
description: 'Example field',
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(ObjectManager::Attribute).to receive(:migration_execute).and_return(true)
|
||||||
|
|
||||||
|
expect do
|
||||||
|
described_class.new(zendesk_object)
|
||||||
|
end.not_to raise_error
|
||||||
|
|
||||||
|
ObjectManager::Attribute.remove(
|
||||||
|
object: 'Ticket',
|
||||||
|
name: zendesk_object.key,
|
||||||
|
)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -136,7 +136,14 @@ class ZendeskImportTest < ActiveSupport::TestCase
|
||||||
checks.each { |check|
|
checks.each { |check|
|
||||||
user = User.find(check[:id])
|
user = User.find(check[:id])
|
||||||
check[:data].each { |key, value|
|
check[:data].each { |key, value|
|
||||||
assert_equal(value, user[key], "user.#{key} for user_id #{check[:id]}")
|
user_value = user[key]
|
||||||
|
text = "user.#{key} for user_id #{check[:id]}"
|
||||||
|
|
||||||
|
if value.nil?
|
||||||
|
assert_nil(user_value, text)
|
||||||
|
else
|
||||||
|
assert_equal(value, user_value, text)
|
||||||
|
end
|
||||||
}
|
}
|
||||||
assert_equal(check[:roles], user.roles.sort.to_a, "#{user.login} roles")
|
assert_equal(check[:roles], user.roles.sort.to_a, "#{user.login} roles")
|
||||||
assert_equal(check[:groups], user.groups.sort.to_a, "#{user.login} groups")
|
assert_equal(check[:groups], user.groups.sort.to_a, "#{user.login} groups")
|
||||||
|
@ -247,7 +254,14 @@ class ZendeskImportTest < ActiveSupport::TestCase
|
||||||
checks.each { |check|
|
checks.each { |check|
|
||||||
organization = Organization.find(check[:id])
|
organization = Organization.find(check[:id])
|
||||||
check[:data].each { |key, value|
|
check[:data].each { |key, value|
|
||||||
assert_equal(value, organization[key], "organization.#{key} for organization_id #{check[:id]}")
|
organization_value = organization[key]
|
||||||
|
text = "organization.#{key} for organization_id #{check[:id]}"
|
||||||
|
|
||||||
|
if value.nil?
|
||||||
|
assert_nil(organization_value, text)
|
||||||
|
else
|
||||||
|
assert_equal(value, organization_value, text)
|
||||||
|
end
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
@ -295,7 +309,7 @@ class ZendeskImportTest < ActiveSupport::TestCase
|
||||||
organization_id: 2,
|
organization_id: 2,
|
||||||
test_checkbox: true,
|
test_checkbox: true,
|
||||||
custom_integer: 999,
|
custom_integer: 999,
|
||||||
custom_dropdown: 'key2',
|
custom_drop_down: 'key2',
|
||||||
custom_decimal: '1.6',
|
custom_decimal: '1.6',
|
||||||
not_existing: nil,
|
not_existing: nil,
|
||||||
},
|
},
|
||||||
|
@ -318,7 +332,7 @@ If you\'re reading this message in your email, click the ticket number link that
|
||||||
organization_id: nil,
|
organization_id: nil,
|
||||||
test_checkbox: false,
|
test_checkbox: false,
|
||||||
custom_integer: nil,
|
custom_integer: nil,
|
||||||
custom_dropdown: '',
|
custom_drop_down: '',
|
||||||
custom_decimal: nil,
|
custom_decimal: nil,
|
||||||
not_existing: nil,
|
not_existing: nil,
|
||||||
},
|
},
|
||||||
|
@ -376,7 +390,14 @@ If you\'re reading this message in your email, click the ticket number link that
|
||||||
checks.each { |check|
|
checks.each { |check|
|
||||||
ticket = Ticket.find(check[:id])
|
ticket = Ticket.find(check[:id])
|
||||||
check[:data].each { |key, value|
|
check[:data].each { |key, value|
|
||||||
assert_equal(value, ticket[key], "ticket.#{key} for ticket_id #{check[:id]}")
|
ticket_value = ticket[key]
|
||||||
|
text = "ticket.#{key} for ticket_id #{check[:id]}"
|
||||||
|
|
||||||
|
if value.nil?
|
||||||
|
assert_nil(ticket_value, text)
|
||||||
|
else
|
||||||
|
assert_equal(value, ticket_value, text)
|
||||||
|
end
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
@ -471,7 +492,7 @@ If you\'re reading this message in your email, click the ticket number link that
|
||||||
custom_date
|
custom_date
|
||||||
custom_integer
|
custom_integer
|
||||||
custom_regex
|
custom_regex
|
||||||
custom_dropdown
|
custom_drop_down
|
||||||
)
|
)
|
||||||
|
|
||||||
assert_equal(copmare_fields, local_fields, 'ticket fields')
|
assert_equal(copmare_fields, local_fields, 'ticket fields')
|
||||||
|
|
Loading…
Reference in a new issue