Browse Source

Merge branch 'private-bz_2105_update_button_unusable_after_modal_dialog_is_gone_rebased' into develop

Billy Zhou 6 years ago
parent
commit
4685f147e6

+ 4 - 0
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()

+ 92 - 0
test/browser/agent_ticket_time_accounting_test.rb

@@ -158,4 +158,96 @@ class AgentTicketTimeAccountingTest < TestCase
     # 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