From 730ed13b7b011b12f4d6767100ece769b721885d Mon Sep 17 00:00:00 2001 From: Billy Zhou Date: Wed, 11 Jul 2018 10:48:39 +0800 Subject: [PATCH] Fixed issue #2105 update button unusable after modal dialog is gone --- .../ticket_zoom/time_accounting.coffee | 4 + .../agent_ticket_time_accounting_test.rb | 92 +++++++++++++++++++ 2 files changed, 96 insertions(+) diff --git a/app/assets/javascripts/app/controllers/ticket_zoom/time_accounting.coffee b/app/assets/javascripts/app/controllers/ticket_zoom/time_accounting.coffee index 8c4c01546ae5..49e3bf379e4d 100644 --- a/app/assets/javascripts/app/controllers/ticket_zoom/time_accounting.coffee +++ b/app/assets/javascripts/app/controllers/ticket_zoom/time_accounting.coffee @@ -29,6 +29,10 @@ class App.TicketZoomTimeAccounting extends App.ControllerModal return if !@cancelCallback @cancelCallback() + onClose: -> + return if !@cancelCallback + @cancelCallback() + onSubmit: => @$('[name="time_unit"]').removeClass('has-error') params = @formParams() diff --git a/test/browser/agent_ticket_time_accounting_test.rb b/test/browser/agent_ticket_time_accounting_test.rb index acb8300aae49..3bfafb8df8b3 100644 --- a/test/browser/agent_ticket_time_accounting_test.rb +++ b/test/browser/agent_ticket_time_accounting_test.rb @@ -158,4 +158,96 @@ def test_macro # off still active timeaccounting logout() end + + def test_closing_time_accounting_modal_by_clicking_background + @browser = browser_instance + login( + username: 'master@example.com', + password: 'test', + url: browser_url, + ) + tasks_close_all() + + # enable time accounting + click( + css: 'a[href="#manage"]', + ) + click( + css: '.content.active a[href="#manage/time_accounting"]', + ) + switch( + css: '.content.active .js-timeAccountingSetting', + type: 'on', + ) + + ticket1 = ticket_create( + data: { + customer: 'nico', + group: 'Users', + title: 'some subject - time accounting#3', + body: 'some body - time accounting#3', + }, + ) + + ticket_update( + data: { + body: 'some note', + }, + do_not_submit: true, + ) + click( + css: '.active .js-submit', + ) + + watch_for( + css: '.content.active .modal', + value: 'Time Accounting', + ) + + # Click outside the modal to make it disappear + execute( + js: 'document.elementFromPoint(300, 100).click();', + ) + watch_for_disappear( + css: '.content.active .modal', + value: 'Time Accounting', + ) + + click( + css: '.active .js-submit', + ) + watch_for( + css: '.content.active .modal', + value: 'Time Accounting', + ) + + set( + css: '.content.active .modal [name=time_unit]', + value: '4', + ) + click( + css: '.content.active .modal .js-submit', + ) + watch_for_disappear( + css: '.content.active .modal', + value: 'Time Accounting', + ) + + # disable time accounting + click( + css: 'a[href="#manage"]', + ) + click( + css: '.content.active a[href="#manage/time_accounting"]', + ) + switch( + css: '.content.active .js-timeAccountingSetting', + type: 'off', + ) + + # make sure "off" AJAX request gets completed + # otherwise following tests might fail because + # off still active timeaccounting + logout() + end end