trabajo-afectivo/test/browser/agent_ticket_email_reply_keep_body_test.rb

240 lines
6.7 KiB
Ruby
Raw Normal View History

# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
2015-10-08 10:26:35 +00:00
require 'browser_test_helper'
2016-09-05 13:18:22 +00:00
class AgentTicketEmailReplyKeepBodyTest < TestCase
2015-10-08 10:26:35 +00:00
def test_reply_message_keep_body
# merge ticket with closed tab
@browser = browser_instance
login(
username: 'agent1@example.com',
password: 'test',
url: browser_url,
2015-10-08 10:26:35 +00:00
)
tasks_close_all
2015-10-08 10:26:35 +00:00
# create new ticket
2019-06-28 11:38:49 +00:00
ticket_create(
2015-10-08 10:26:35 +00:00
data: {
customer: 'nico',
group: 'Users',
title: 'some subject 123äöü - reply test',
body: 'some body 123äöü - reply test',
2015-10-08 10:26:35 +00:00
},
)
sleep 1
# fill body
ticket_update(
data: {
2015-10-08 10:26:35 +00:00
body: 'keep me',
},
do_not_submit: true,
)
# scroll to reply - needed for chrome
scroll_to(
position: 'botton',
2015-12-14 16:09:09 +00:00
css: '.content.active [data-type="emailReply"]',
)
2015-10-08 10:26:35 +00:00
# click reply
2016-03-22 23:12:50 +00:00
click(css: '.content.active [data-type="emailReply"]')
2015-10-08 10:26:35 +00:00
# check body
watch_for(
css: '.content.active .js-reset',
value: '(Discard your unsaved changes.|Verwerfen der)',
2015-10-08 10:26:35 +00:00
no_quote: true,
)
# check body
ticket_verify(
data: {
body: 'keep me',
},
)
# scroll to reply - needed for chrome
2016-03-23 05:55:34 +00:00
sleep 5
scroll_to(
position: 'botton',
2015-12-14 16:09:09 +00:00
css: '.content.active [data-type="emailReply"]',
)
2015-10-08 10:26:35 +00:00
# click reply
2016-03-22 23:12:50 +00:00
click(css: '.content.active [data-type="emailReply"]')
2015-10-08 10:26:35 +00:00
# check body
watch_for(
css: '.content.active .js-reset',
value: '(Discard your unsaved changes.|Verwerfen der)',
2015-10-08 10:26:35 +00:00
no_quote: true,
)
2016-03-22 23:12:50 +00:00
# check body
ticket_verify(
data: {
body: 'keep me',
},
)
2015-10-08 10:26:35 +00:00
end
def change_quote_config(params = {})
scroll_to(
position: 'botton',
css: '.content.active .js-settingContainer .js-setting',
)
click(css: '.content.active .js-settingContainer .js-setting')
modal_ready
select(
css: params[:css],
value: params[:value]
)
click(
css: params[:submit_css],
)
modal_close
modal_disappear
end
def test_full_quote
2019-06-28 11:38:49 +00:00
@browser = browser_instance
login(
2021-08-17 12:10:02 +00:00
username: 'admin@example.com',
password: 'test',
url: browser_url,
)
tasks_close_all
ticket_open_by_title(
title: 'Welcome to Zammad',
)
watch_for(
css: '.content.active .js-settingContainer .js-setting .dropdown-icon',
)
# enable email full quote in the ticket zoom config page
change_quote_config(
css: '.modal #ui_ticket_zoom_article_email_full_quote select[name="ui_ticket_zoom_article_email_full_quote"]',
value: 'yes',
submit_css: '.modal #ui_ticket_zoom_article_email_full_quote .btn[type="submit"]',
)
change_quote_config(
css: '.modal #ui_ticket_zoom_article_email_full_quote_header select[name="ui_ticket_zoom_article_email_full_quote_header"]',
value: 'yes',
submit_css: '.modal #ui_ticket_zoom_article_email_full_quote_header .btn[type="submit"]',
)
scroll_to(
position: 'botton',
css: '.content.active .ticket-article [data-type="emailReply"]',
)
click(css: '.content.active .ticket-article [data-type="emailReply"]')
full_text = @browser.find_element(css: '.content.active .article-new .articleNewEdit-body').text
match = full_text.match(%r{\nOn (.*?) Nicole Braun wrote:})
assert match
assert match[1]
assert Time.zone.parse(match[1])
# try again, but with the full quote header disabled
tasks_close_all
ticket_open_by_title(
title: 'Welcome to Zammad',
)
change_quote_config(
css: '.modal #ui_ticket_zoom_article_email_full_quote_header select[name="ui_ticket_zoom_article_email_full_quote_header"]',
value: 'no',
submit_css: '.modal #ui_ticket_zoom_article_email_full_quote_header .btn[type="submit"]',
)
scroll_to(
position: 'botton',
css: '.content.active .ticket-article [data-type="emailReply"]',
)
click(css: '.content.active .ticket-article [data-type="emailReply"]')
full_text = @browser.find_element(css: '.content.active .article-new .articleNewEdit-body').text
match = full_text.match(%r{\nOn (.*?) Nicole Braun wrote:})
assert_nil match
# after test, turn full quote header back on again
tasks_close_all
ticket_open_by_title(
title: 'Welcome to Zammad',
)
change_quote_config(
css: '.modal #ui_ticket_zoom_article_email_full_quote_header select[name="ui_ticket_zoom_article_email_full_quote_header"]',
value: 'yes',
submit_css: '.modal #ui_ticket_zoom_article_email_full_quote_header .btn[type="submit"]',
)
end
# Regression test for issue #2344 - Missing translation for Full-Quote-Text "on xy wrote"
def test_full_quote_german_locale
2019-06-28 11:38:49 +00:00
@browser = browser_instance
login(
2021-08-17 12:10:02 +00:00
username: 'admin@example.com',
password: 'test',
url: browser_url,
)
tasks_close_all
ticket_open_by_title(
title: 'Welcome to Zammad',
)
watch_for(
css: '.content.active .js-settingContainer .js-setting .dropdown-icon',
)
# enable email full quote in the ticket zoom config page
change_quote_config(
css: '.modal #ui_ticket_zoom_article_email_full_quote select[name="ui_ticket_zoom_article_email_full_quote"]',
value: 'yes',
submit_css: '.modal #ui_ticket_zoom_article_email_full_quote .btn[type="submit"]',
)
# Suppress the modal dialog that invites to contributions for translations that are < 95% as this breaks the tests for de-de.
@browser.execute_script "App.LocalStorage.set('translation_support_no', true, App.Session.get('id'))"
# switch user profile language to German
switch_language(
data: {
language: 'Deutsch'
},
)
ticket_open_by_title(
title: 'Welcome to Zammad',
)
scroll_to(
position: 'botton',
css: '.content.active .ticket-article [data-type="emailReply"]',
)
click(css: '.content.active .ticket-article [data-type="emailReply"]')
full_text = @browser.find_element(css: '.content.active .article-new .articleNewEdit-body').text
match = full_text.match(%r{\nAm (.*?), schrieb Nicole Braun:})
assert match
datestamp = match[1]
assert datestamp
assert Time.zone.parse(datestamp)
day_of_week = datestamp.split(',').first
assert %w[Montag Dienstag Mittwoch Donnerstag Freitag Samstag Sonntag].include? day_of_week
# switch user profile language to English again for other tests
switch_language(
data: {
language: 'English (United States)'
},
)
end
2015-10-08 10:26:35 +00:00
end