diff --git a/app/assets/javascripts/app/controllers/import_zendesk.coffee b/app/assets/javascripts/app/controllers/import_zendesk.coffee index a94f5631c..e0f1519cc 100644 --- a/app/assets/javascripts/app/controllers/import_zendesk.coffee +++ b/app/assets/javascripts/app/controllers/import_zendesk.coffee @@ -151,7 +151,11 @@ class Index extends App.ControllerContent success: (data, status, xhr) => if data.result is 'import_done' - window.location.reload() + delay = 0 + if @Config.get('developer_mode') is true + delay = 5000 + + @delay(window.location.reload, delay) return if data.result is 'error' diff --git a/lib/import/zendesk.rb b/lib/import/zendesk.rb index 8ebc8b3d4..9f947a2ed 100644 --- a/lib/import/zendesk.rb +++ b/lib/import/zendesk.rb @@ -148,7 +148,7 @@ module Import::Zendesk initialize_client # retrive statistic - statistic = { + result = { 'Tickets' => 0, 'TicketFields' => 0, 'UserFields' => 0, @@ -162,20 +162,20 @@ module Import::Zendesk 'Automations' => 0, } - statistic.each { |object, _score| + result.each { |object, _score| counter = 0 @client.send( object.underscore.to_sym ).all do |_resource| counter += 1 end - statistic[ object ] = counter + result[ object ] = counter } - if statistic - Cache.write('import_zendesk_stats', statistic) + if result + Cache.write('import_zendesk_stats', result) end - statistic + result end =begin @@ -317,12 +317,7 @@ module Import::Zendesk local_fields = local_object.constantize.column_names - zendesk_object_fields = [] @client.send("#{local_object.downcase}_fields").all { |zendesk_object_field| - zendesk_object_fields.push(zendesk_object_field) - } - - zendesk_object_fields.each { |zendesk_object_field| if local_object == 'Ticket' mapped_object_field = method("mapping_#{local_object.downcase}_field").call( zendesk_object_field.type ) @@ -472,13 +467,7 @@ module Import::Zendesk def import_groups @zendesk_group_mapping = {} - zendesk_groups = [] @client.groups.all { |zendesk_group| - zendesk_groups.push(zendesk_group) - } - - zendesk_groups.each { |zendesk_group| - local_group = Group.create_if_not_exists( name: zendesk_group.name, active: !zendesk_group.deleted, @@ -526,12 +515,7 @@ module Import::Zendesk role_agent = Role.lookup(name: 'Agent') role_customer = Role.lookup(name: 'Customer') - zendesk_users = [] @client.users.all { |zendesk_user| - zendesk_users.push(zendesk_user) - } - - zendesk_users.each { |zendesk_user| local_user_fields = { login: zendesk_user.id.to_s, # Zendesk users may have no other identifier than the ID, e.g. twitter users @@ -602,12 +586,7 @@ module Import::Zendesk @zendesk_user_group_mapping = {} - zendesk_group_memberships = [] @client.group_memberships.all { |zendesk_group_membership| - zendesk_group_memberships.push(zendesk_group_membership) - } - - zendesk_group_memberships.each { |zendesk_group_membership| @zendesk_user_group_mapping[ zendesk_group_membership.user_id ] ||= [] @zendesk_user_group_mapping[ zendesk_group_membership.user_id ].push( zendesk_group_membership.group_id ) @@ -641,12 +620,7 @@ module Import::Zendesk article_type_facebook_feed_post = Ticket::Article::Type.lookup(name: 'facebook feed post') article_type_facebook_feed_comment = Ticket::Article::Type.lookup(name: 'facebook feed comment') - zendesk_tickets = [] @client.tickets.all { |zendesk_ticket| - zendesk_tickets.push(zendesk_ticket) - } - - zendesk_tickets.each { |zendesk_ticket| zendesk_ticket_fields = {} zendesk_ticket.custom_fields.each { |zendesk_ticket_field| @@ -763,7 +737,6 @@ module Import::Zendesk elsif zendesk_article.via.channel == 'twitter' local_article_fields[:message_id] = zendesk_article.id - # TODO local_article_fields[:type_id] = if zendesk_article.via.source.rel == 'mention' article_type_twitter_status.id else @@ -776,7 +749,6 @@ module Import::Zendesk local_article_fields[:to] = zendesk_article.via.source.to.facebook_id local_article_fields[:message_id] = zendesk_article.id - # TODO local_article_fields[:type_id] = if zendesk_article.via.source.rel == 'post' article_type_facebook_feed_post.id else @@ -842,12 +814,7 @@ module Import::Zendesk # https://developer.zendesk.com/rest_api/docs/core/macros def import_macros - zendesk_macros = [] @client.macros.all { |zendesk_macro| - zendesk_macros.push(zendesk_macro) - } - - zendesk_macros.each { |zendesk_macro| # TODO next if !zendesk_macro.active @@ -899,12 +866,7 @@ module Import::Zendesk # https://developer.zendesk.com/rest_api/docs/core/views def import_views - zendesk_views = [] @client.views.all { |zendesk_view| - zendesk_views.push(zendesk_view) - } - - zendesk_views.each { |zendesk_view| # "url" => "https://example.zendesk.com/api/v2/views/59511071.json" # "id" => 59511071 @@ -1033,12 +995,7 @@ module Import::Zendesk # https://developer.zendesk.com/rest_api/docs/core/automations def import_automations - zendesk_automations = [] @client.automations.all { |zendesk_automation| - zendesk_automations.push(zendesk_automation) - } - - zendesk_automations.each { |zendesk_automation| # "url" => "https://example.zendesk.com/api/v2/automations/60037892.json" # "id" => 60037892 diff --git a/test/integration/zendesk_import_browser_test.rb b/test/integration/zendesk_import_browser_test.rb index f2e90468d..b40b378c7 100644 --- a/test/integration/zendesk_import_browser_test.rb +++ b/test/integration/zendesk_import_browser_test.rb @@ -79,17 +79,32 @@ class ZendeskImportBrowserTest < TestCase click(css: '.js-migration-start') watch_for( - css: 'body', - value: 'login', + css: '.js-group .js-done', + value: '2', + timeout: 60, + ) + + watch_for( + css: '.js-organization .js-done', + value: '1', + timeout: 60, + ) + + watch_for( + css: '.js-user .js-done', + value: '141', + timeout: 60, + ) + + watch_for( + css: '.js-ticket .js-done', + value: '143', timeout: 300, ) - assert_equal( 143, User.count, 'users' ) - assert_equal( 3, Group.count, 'groups' ) - assert_equal( 5, Role.count, 'roles' ) - assert_equal( 2, Organization.count, 'organizations' ) - assert_equal( 144, Ticket.count, 'tickets' ) - assert_equal( 151, Ticket::Article.count, 'ticket articles' ) - assert_equal( 2, Store.count, 'ticket article attachments' ) + watch_for( + css: 'body', + value: 'login', + ) end end