From 3a645d1c6ede91b0bb571e120b957b4102f063dc Mon Sep 17 00:00:00 2001 From: Mantas Date: Thu, 17 May 2018 19:55:57 +0300 Subject: [PATCH] Fixes #2017 phone notify not clearing --- .../javascripts/app/controllers/cti.coffee | 24 ++++++--- script/build/test_slice_tests.sh | 6 +++ ...ne_notify_not_clearing_on_leftside_test.rb | 51 +++++++++++++++++++ 3 files changed, 73 insertions(+), 8 deletions(-) create mode 100644 test/browser/phone_notify_not_clearing_on_leftside_test.rb diff --git a/app/assets/javascripts/app/controllers/cti.coffee b/app/assets/javascripts/app/controllers/cti.coffee index dddd07602..0fa50580d 100644 --- a/app/assets/javascripts/app/controllers/cti.coffee +++ b/app/assets/javascripts/app/controllers/cti.coffee @@ -10,6 +10,7 @@ class App.CTI extends App.Controller active: false counter: 0 state: {} + backendEnabled: false constructor: -> super @@ -29,9 +30,9 @@ class App.CTI extends App.Controller @meta.counter += 1 @updateNavMenu() if data.state is 'answer' || data.state is 'hangup' - return if !@meta.state[data.id] - delete @meta.state[data.id] - @meta.counter -= 1 + if @meta.state[data.id] + delete @meta.state[data.id] + @meta.counter -= 1 @updateNavMenu() 'cti_event' ) @@ -82,6 +83,17 @@ class App.CTI extends App.Controller App.Collection.loadAssets(data.assets) if data.backends @backends = data.backends + + # check if configured backends are changed + backendEnabled = false + for backend in @backends + if backend.enabled + backendEnabled = true + if backendEnabled isnt @backendEnabled + @renderDone = false + @backendEnabled = backendEnabled + + # render new caller list if data.list @list = data.list if @renderDone @@ -109,11 +121,7 @@ class App.CTI extends App.Controller return # check if min one backend is enabled - backendEnabled = false - for backend in @backends - if backend.enabled - backendEnabled = true - if !backendEnabled + if !@backendEnabled @html App.view('cti/not_configured')( backends: @backends isAdmin: @permissionCheck('admin.integration') diff --git a/script/build/test_slice_tests.sh b/script/build/test_slice_tests.sh index 08c5ff28e..daec7e3d8 100755 --- a/script/build/test_slice_tests.sh +++ b/script/build/test_slice_tests.sh @@ -65,6 +65,7 @@ if [ "$LEVEL" == '1' ]; then # test/browser/maintenance_session_message_test.rb # test/browser/manage_test.rb # test/browser/monitoring_test.rb + rm test/browser/phone_notify_not_clearing_on_leftside_test.rb rm test/browser/preferences_language_test.rb rm test/browser/preferences_permission_check_test.rb rm test/browser/preferences_token_access_test.rb @@ -137,6 +138,7 @@ elif [ "$LEVEL" == '2' ]; then rm test/browser/maintenance_session_message_test.rb rm test/browser/manage_test.rb rm test/browser/monitoring_test.rb + rm test/browser/phone_notify_not_clearing_on_leftside_test.rb rm test/browser/preferences_language_test.rb rm test/browser/preferences_permission_check_test.rb rm test/browser/preferences_token_access_test.rb @@ -209,6 +211,7 @@ elif [ "$LEVEL" == '3' ]; then rm test/browser/maintenance_session_message_test.rb rm test/browser/manage_test.rb rm test/browser/monitoring_test.rb + rm test/browser/phone_notify_not_clearing_on_leftside_test.rb rm test/browser/preferences_language_test.rb rm test/browser/preferences_permission_check_test.rb rm test/browser/preferences_token_access_test.rb @@ -281,6 +284,7 @@ elif [ "$LEVEL" == '4' ]; then rm test/browser/maintenance_session_message_test.rb rm test/browser/manage_test.rb rm test/browser/monitoring_test.rb + rm test/browser/phone_notify_not_clearing_on_leftside_test.rb rm test/browser/preferences_language_test.rb rm test/browser/preferences_permission_check_test.rb rm test/browser/preferences_token_access_test.rb @@ -352,6 +356,7 @@ elif [ "$LEVEL" == '5' ]; then rm test/browser/maintenance_session_message_test.rb rm test/browser/manage_test.rb rm test/browser/monitoring_test.rb + rm test/browser/phone_notify_not_clearing_on_leftside_test.rb rm test/browser/preferences_language_test.rb rm test/browser/preferences_permission_check_test.rb rm test/browser/preferences_token_access_test.rb @@ -426,6 +431,7 @@ elif [ "$LEVEL" == '6' ]; then rm test/browser/maintenance_session_message_test.rb rm test/browser/manage_test.rb rm test/browser/monitoring_test.rb + # rm test/browser/phone_notify_not_clearing_on_leftside_test.rb # test/browser/preferences_language_test.rb # test/browser/preferences_permission_check_test.rb # test/browser/preferences_token_access_test.rb diff --git a/test/browser/phone_notify_not_clearing_on_leftside_test.rb b/test/browser/phone_notify_not_clearing_on_leftside_test.rb new file mode 100644 index 000000000..df9d674da --- /dev/null +++ b/test/browser/phone_notify_not_clearing_on_leftside_test.rb @@ -0,0 +1,51 @@ +require 'browser_test_helper' + +# Regression test for #2017 + +class PhoneNotifyNotClearingOnLeftsideTest < TestCase + def test_notify_badge + id = rand(99_999_999) + + @browser = browser_instance + login( + username: 'master@example.com', + password: 'test', + url: browser_url, + ) + + click(css: 'a[href="#manage"]') + click(css: 'a[href="#system/integration"]') + click(css: 'a[href="#system/integration/sipgate"]') + + if !@browser.find_element(css: 'input[name=sipgate_integration]').property('checked') + switch( + css: '.active .js-switch', + type: 'on' + ) + end + + watch_for( + css: 'a[href="#cti"]' + ) + + click(css: 'a[href="#cti"]') + + # simulate sipgate callbacks + + url = URI.join(browser_url, 'api/v1/sipgate/in') + params = { direction: 'in', from: '491715000002', to: '4930600000000', callId: "4991155921769858278-#{id}", cause: 'busy' } + Net::HTTP.post_form(url, params.merge(event: 'newCall')) + Net::HTTP.post_form(url, params.merge(event: 'hangup')) + + watch_for( + css: '.js-phoneMenuItem .counter', + value: '1' + ) + + @browser.find_element(css: '.table-checkbox label').click + + watch_for_disappear( + css: '.js-phoneMenuItem .counter' + ) + end +end