From 82acddc4200a4d7ccb8be1a8489485c71c3f2811 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Thu, 21 Jun 2018 00:33:44 +0200 Subject: [PATCH] Fixed issue #2046 - Special characters get HTML encoded when displayed in overviews. Improved PR #2049. --- .../views/generic/table_row_group_by.jst.eco | 2 +- script/build/test_slice_tests.sh | 6 ++ ...ket_overview_group_by_organization_test.rb | 70 +++++++++++++++++++ test/browser_test_helper.rb | 70 +++++++++++++++++++ 4 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 test/browser/agent_ticket_overview_group_by_organization_test.rb diff --git a/app/assets/javascripts/app/views/generic/table_row_group_by.jst.eco b/app/assets/javascripts/app/views/generic/table_row_group_by.jst.eco index b59254fef..830374bfc 100644 --- a/app/assets/javascripts/app/views/generic/table_row_group_by.jst.eco +++ b/app/assets/javascripts/app/views/generic/table_row_group_by.jst.eco @@ -1,3 +1,3 @@ - <%= @groupByName %><% if @groupByCount:%> (<%= @groupByCount %>)<% end %> + <%- @groupByName %><% if @groupByCount:%> (<%= @groupByCount %>)<% end %> diff --git a/script/build/test_slice_tests.sh b/script/build/test_slice_tests.sh index f705f0c0f..5f7f178dd 100755 --- a/script/build/test_slice_tests.sh +++ b/script/build/test_slice_tests.sh @@ -37,6 +37,7 @@ if [ "$LEVEL" == '1' ]; then rm test/browser/agent_ticket_macro_test.rb rm test/browser/agent_ticket_merge_test.rb rm test/browser/agent_ticket_online_notification_test.rb + rm test/browser/agent_ticket_overview_group_by_organization_test.rb rm test/browser/agent_ticket_overview_level0_test.rb rm test/browser/agent_ticket_overview_level1_test.rb rm test/browser/agent_ticket_overview_tab_test.rb @@ -111,6 +112,7 @@ elif [ "$LEVEL" == '2' ]; then rm test/browser/agent_ticket_macro_test.rb # test/browser/agent_ticket_merge_test.rb rm test/browser/agent_ticket_online_notification_test.rb + rm test/browser/agent_ticket_overview_group_by_organization_test.rb rm test/browser/agent_ticket_overview_level0_test.rb rm test/browser/agent_ticket_overview_level1_test.rb rm test/browser/agent_ticket_overview_tab_test.rb @@ -185,6 +187,7 @@ elif [ "$LEVEL" == '3' ]; then # test/browser/agent_ticket_macro_test.rb rm test/browser/agent_ticket_merge_test.rb rm test/browser/agent_ticket_online_notification_test.rb + rm test/browser/agent_ticket_overview_group_by_organization_test.rb rm test/browser/agent_ticket_overview_level0_test.rb rm test/browser/agent_ticket_overview_level1_test.rb rm test/browser/agent_ticket_overview_tab_test.rb @@ -259,6 +262,7 @@ elif [ "$LEVEL" == '4' ]; then rm test/browser/agent_ticket_macro_test.rb rm test/browser/agent_ticket_merge_test.rb # test/browser/agent_ticket_online_notification_test.rb + # test/browser/agent_ticket_overview_group_by_organization_test.rb # test/browser/agent_ticket_overview_level0_test.rb # test/browser/agent_ticket_overview_level1_test.rb # test/browser/agent_ticket_overview_tab_test.rb @@ -332,6 +336,7 @@ elif [ "$LEVEL" == '5' ]; then rm test/browser/agent_ticket_macro_test.rb rm test/browser/agent_ticket_merge_test.rb rm test/browser/agent_ticket_online_notification_test.rb + rm test/browser/agent_ticket_overview_group_by_organization_test.rb rm test/browser/agent_ticket_overview_level0_test.rb rm test/browser/agent_ticket_overview_level1_test.rb rm test/browser/agent_ticket_overview_tab_test.rb @@ -408,6 +413,7 @@ elif [ "$LEVEL" == '6' ]; then rm test/browser/agent_ticket_macro_test.rb rm test/browser/agent_ticket_merge_test.rb rm test/browser/agent_ticket_online_notification_test.rb + rm test/browser/agent_ticket_overview_group_by_organization_test.rb rm test/browser/agent_ticket_overview_level0_test.rb rm test/browser/agent_ticket_overview_level1_test.rb rm test/browser/agent_ticket_overview_tab_test.rb diff --git a/test/browser/agent_ticket_overview_group_by_organization_test.rb b/test/browser/agent_ticket_overview_group_by_organization_test.rb new file mode 100644 index 000000000..d49be92ee --- /dev/null +++ b/test/browser/agent_ticket_overview_group_by_organization_test.rb @@ -0,0 +1,70 @@ + +require 'browser_test_helper' + +class AgentTicketOverviewGroupByOrganizationTest < TestCase + +=begin + + Verify fix for Github issue #2046 - Special characters get HTML encoded when displayed in overviews... + +=end + def test_grouping_by_organzation_overview + random = rand(999_999).to_s + user_email = "user_#{random}@example.com" + overview_name = "overview_#{random}" + + @browser = instance = browser_instance + login( + username: 'master@example.com', + password: 'test', + url: browser_url, + ) + tasks_close_all() + + # 1. Create a new test organization with special characters in its name + organization = organization_create( + data: { + name: 'äöüß & Test Organization', + } + ) + + # 2. Create a new user that belongs to the test organization + user = user_create( + data: { + login: 'test user', + firstname: 'Max', + lastname: 'Mustermann', + email: user_email, + password: 'some-pass', + organization: 'äöüß & Test Organization', + } + ) + + # 3. Create a new ticket for the test user + ticket = ticket_create( + data: { + customer: user_email, + title: 'test ticket', + body: 'test ticket', + group: 'Users', + }, + ) + + # 4. Create an overview grouping by organization + overview = overview_create( + data: { + name: overview_name, + roles: %w[Agent Admin Customer], + group_by: 'Organization', + } + ) + + # 5. Open the newly created overview and verify that the organization name is correctly rendered + location(url: "#{browser_url}/#ticket/view/#{overview_name}") + sleep 1 + elements = instance.find_elements(xpath: '//b[contains(text(),"äöüß & Test Organization")]') + elements = elements.select { |x| x.text.present? } + assert elements + assert_equal 'äöüß & Test Organization', elements.first.text + end +end diff --git a/test/browser_test_helper.rb b/test/browser_test_helper.rb index e531688f0..8d9861a86 100644 --- a/test/browser_test_helper.rb +++ b/test/browser_test_helper.rb @@ -1686,6 +1686,15 @@ wait untill text in selector disabppears ) end + if data[:group_by] + select( + browser: instance, + css: '.modal select[name="group_by"]', + value: data[:group_by], + mute_log: true, + ) + end + instance.find_elements(css: '.modal button.js-submit')[0].click modal_disappear(browser: instance) 11.times do @@ -2695,6 +2704,17 @@ wait untill text in selector disabppears element = instance.find_elements(css: '.modal input[name=password_confirm]')[0] element.clear element.send_keys(data[:password]) + if data[:organization] + element = instance.find_elements(css: '.modal input.searchableSelect-main')[0] + element.clear + element.send_keys(data[:organization]) + target = nil + until target + sleep 0.5 + target = instance.find_elements(css: ".modal li[title='#{data[:organization]}']")[0] + end + target.click() + end check( browser: instance, css: '.modal input[name=role_ids][value=3]', @@ -2718,6 +2738,56 @@ wait untill text in selector disabppears assert(true, 'user created') end +=begin + + organization_create( + browser: browser2, + data: { + name: 'Test Organization', + } + ) + +=end + + def organization_create(params = {}) + switch_window_focus(params) + log('organization_create', params) + + instance = params[:browser] || @browser + data = params[:data] + + click( + browser: instance, + css: 'a[href="#manage"]', + mute_log: true, + ) + click( + browser: instance, + css: '.content.active a[href="#manage/organizations"]', + mute_log: true, + ) + click( + browser: instance, + css: '.content.active a[data-type="new"]', + mute_log: true, + ) + modal_ready(browser: instance) + element = instance.find_elements(css: '.modal input[name=name]')[0] + element.clear + element.send_keys(data[:name]) + + instance.find_elements(css: '.modal button.js-submit')[0].click + modal_disappear( + browser: instance, + timeout: 5, + ) + watch_for( + browser: instance, + css: 'body', + value: data[:name], + ) + end + =begin calendar_create(