From e5cd5ce845d1b857c51ca8a79fe9e9552610a636 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Thu, 2 Aug 2018 23:21:13 +0200 Subject: [PATCH] Fixed issue #2164 - i-doit: Double click needed to select object after searching (w/o category). Fixed issue #2165 - i-doit: Setting object before filling in the ticket information removed the i-doit objects. --- .../controllers/idoit_object_selector.coffee | 4 +- .../ticket_zoom/sidebar_idoit.coffee | 3 + .../integration/idoit_object_selector.jst.eco | 2 +- test/integration/idoit_browser_test.rb | 62 ++++++++++++++++++- 4 files changed, 67 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/app/controllers/idoit_object_selector.coffee b/app/assets/javascripts/app/controllers/idoit_object_selector.coffee index 2a7053e50..d50519ba6 100644 --- a/app/assets/javascripts/app/controllers/idoit_object_selector.coffee +++ b/app/assets/javascripts/app/controllers/idoit_object_selector.coffee @@ -22,11 +22,11 @@ class App.IdoitObjectSelector extends App.ControllerModal @contentInline.find('.js-typeSelect').html(@renderTypeSelector(result)) - @contentInline.filter('.js-search').on('change', 'select, input', (e) => + @contentInline.on('change', 'input.js-shadow', (e) => params = @formParam(e.target) @search(params) ) - @contentInline.filter('.js-search').on('keyup', 'input', (e) => + @contentInline.on('keyup', 'input.js-searchField', (e) => params = @formParam(e.target) @search(params) ) diff --git a/app/assets/javascripts/app/controllers/ticket_zoom/sidebar_idoit.coffee b/app/assets/javascripts/app/controllers/ticket_zoom/sidebar_idoit.coffee index c23e9cc34..9f3da418c 100644 --- a/app/assets/javascripts/app/controllers/ticket_zoom/sidebar_idoit.coffee +++ b/app/assets/javascripts/app/controllers/ticket_zoom/sidebar_idoit.coffee @@ -92,6 +92,9 @@ class SidebarIdoit extends App.Controller showError: (message) => @html App.i18n.translateInline(message) + reload: => + @showObjectsContent() + delete: (objectId) => localObjects = [] for localObjectId in @objectIds diff --git a/app/assets/javascripts/app/views/integration/idoit_object_selector.jst.eco b/app/assets/javascripts/app/views/integration/idoit_object_selector.jst.eco index fa63a3604..aa6ded2aa 100644 --- a/app/assets/javascripts/app/views/integration/idoit_object_selector.jst.eco +++ b/app/assets/javascripts/app/views/integration/idoit_object_selector.jst.eco @@ -1,5 +1,5 @@
diff --git a/test/integration/idoit_browser_test.rb b/test/integration/idoit_browser_test.rb index ee05dad07..0369b0734 100644 --- a/test/integration/idoit_browser_test.rb +++ b/test/integration/idoit_browser_test.rb @@ -57,7 +57,67 @@ class IntegrationIdoitTest < TestCase data: { customer: 'nico', group: 'Users', - title: 'subject - i-doit integration', + title: 'subject - i-doit integration #1', + body: 'body - i-doit integration', + }, + do_not_submit: true, + ) + + # open the i-doit selection modal + click(css: '.content.active .tabsSidebar svg.icon-printer') + click(css: '.content.active .sidebar[data-tab="idoit"] .js-headline') + click(css: '.content.active .sidebar[data-tab="idoit"] .dropdown-menu') + + # wait for the API call to populate the dropdown menu + watch_for(css: '.content.active .modal form input.js-input') + # open the dropdown menu and choose the Building option + click(css: '.content.active .modal form input.js-input') + click(css: ".content.active .modal form li.js-option[title='#{api_category}']") + # wait for the building results to populate from the API + watch_for(css: '.content.active .modal form.js-result table.table') + + # click the check box from the first row and note its entry ID + checkbox = @browser.find_elements(css: '.content.active .modal form.js-result tbody :first-child input')[0] + entry_id = checkbox.attribute('value') + checkbox.click() + + # submit the i-doit object selections + click(css: '.content.active .modal form button.js-submit') + + # confirm that the entry have been successfully recorded + watch_for( + css: ".content.active .sidebar[data-tab='idoit'] a[href='#{api_endpoint}/?objID=#{entry_id}']", + ) + + # reselect the customer and verify if object is still shown in sidebar + ticket_customer_select( + css: '.content.active .newTicket', + customer: 'master', + ) + + watch_for( + css: ".content.active .sidebar[data-tab='idoit'] a[href='#{api_endpoint}/?objID=#{entry_id}']", + ) + + # now submit the ticket + click(css: '.content.active .newTicket button.js-submit') + + watch_for( + css: '.content.active .ticketZoom-header .ticket-number', + ) + + watch_for( + css: ".content.active .sidebar[data-tab='idoit'] a[href='#{api_endpoint}/?objID=#{entry_id}']", + ) + + tasks_close_all() + + # new create a new ticket with an i-doit object + ticket = ticket_create( + data: { + customer: 'nico', + group: 'Users', + title: 'subject - i-doit integration #2', body: 'body - i-doit integration', }, do_not_submit: true,