Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5-Boxiang
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Hamza
erp5-Boxiang
Commits
c9f33e7e
Commit
c9f33e7e
authored
Oct 09, 2018
by
Jérome Perrin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
officejs_support_request_ui_test: include more tests as python component
parent
756d6323
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
492 additions
and
1 deletion
+492
-1
bt5/erp5_officejs_support_request_ui_test/SkinTemplateItem/portal_skins/erp5_officejs_support_request_test/ERP5Site_cleanupSupportRequestUITestDataSet.py
...quest_test/ERP5Site_cleanupSupportRequestUITestDataSet.py
+6
-0
bt5/erp5_officejs_support_request_ui_test/TestTemplateItem/portal_components/test.erp5.testSupportRequest.py
...ateItem/portal_components/test.erp5.testSupportRequest.py
+349
-0
bt5/erp5_officejs_support_request_ui_test/TestTemplateItem/portal_components/test.erp5.testSupportRequest.xml
...teItem/portal_components/test.erp5.testSupportRequest.xml
+135
-0
bt5/erp5_officejs_support_request_ui_test/bt/template_test_id_list
...officejs_support_request_ui_test/bt/template_test_id_list
+2
-1
No files found.
bt5/erp5_officejs_support_request_ui_test/SkinTemplateItem/portal_skins/erp5_officejs_support_request_test/ERP5Site_cleanupSupportRequestUITestDataSet.py
View file @
c9f33e7e
...
@@ -20,6 +20,12 @@ for brain in portal.portal_catalog(
...
@@ -20,6 +20,12 @@ for brain in portal.portal_catalog(
to_delete_list
.
append
(
support_request
.
getId
())
to_delete_list
.
append
(
support_request
.
getId
())
portal
.
support_request_module
.
manage_delObjects
(
to_delete_list
)
portal
.
support_request_module
.
manage_delObjects
(
to_delete_list
)
event_to_delete_id_list
=
[]
for
event
in
portal
.
event_module
.
contentValues
():
if
event
.
getFollowUp
(
portal_type
=
'Support Request'
):
event_to_delete_id_list
.
append
(
event
.
getId
())
portal
.
event_module
.
manage_delObjects
(
event_to_delete_id_list
)
# Clear worklist cache
# Clear worklist cache
portal
.
portal_caches
.
clearAllCache
()
portal
.
portal_caches
.
clearAllCache
()
...
...
bt5/erp5_officejs_support_request_ui_test/TestTemplateItem/portal_components/test.erp5.testSupportRequest.py
0 → 100644
View file @
c9f33e7e
##############################################################################
#
# Copyright (c) 2018- Nexedi SA and Contributors. All Rights Reserved.
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsibility of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# guarantees and support are strongly adviced to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
##############################################################################
import
json
from
StringIO
import
StringIO
from
DateTime
import
DateTime
from
Products.ERP5Type.tests.ERP5TypeTestCase
import
ERP5TypeTestCase
class
FileUpload
(
StringIO
):
filename
=
'attached_file.txt'
def
ignoreKeys
(
list_of_dict
,
*
ignored
):
"""remove some keys from each dict dict to compare except some ignored keys.
"""
new_list
=
[]
for
d
in
list_of_dict
:
d
=
d
.
copy
()
for
k
in
ignored
:
d
.
pop
(
k
,
None
)
new_list
.
append
(
d
)
return
new_list
class
SupportRequestTestCase
(
ERP5TypeTestCase
,
object
):
def
afterSetUp
(
self
):
ERP5TypeTestCase
.
afterSetUp
(
self
)
self
.
assertEqual
(
self
.
portal
.
ERP5Site_setupSupportRequestPreference
(),
'Done.'
)
self
.
tic
()
self
.
assertEqual
(
self
.
portal
.
ERP5Site_createSupportRequestUITestDataSet
(),
'Done.'
)
self
.
tic
()
self
.
createUserAndLogin
()
def
beforeTearDown
(
self
):
self
.
abort
()
self
.
tic
()
self
.
portal
.
person_module
.
manage_delObjects
(
[
self
.
user
.
getId
()])
self
.
assertEqual
(
self
.
portal
.
ERP5Site_cleanupSupportRequestUITestDataSet
(),
'Done.'
)
self
.
tic
()
def
createUserAndLogin
(
self
):
self
.
user
=
self
.
portal
.
person_module
.
newContent
(
first_name
=
self
.
id
()
)
self
.
user
.
newContent
(
portal_type
=
'Assignment'
).
open
()
self
.
user
.
newContent
(
portal_type
=
'ERP5 Login'
,
reference
=
self
.
user
.
getUserId
(),
# XXX workaround until https://lab.nexedi.com/nexedi/erp5/merge_requests/478
password
=
self
.
newPassword
()
).
validate
()
self
.
user
.
validate
()
self
.
tic
()
# give this user some roles
for
role
in
(
'Assignee'
,
'Assignor'
,
'Auditor'
,):
self
.
portal
.
acl_users
.
zodb_roles
.
assignRoleToPrincipal
(
role
,
self
.
user
.
getUserId
())
self
.
tic
()
self
.
login
(
self
.
user
.
getUserId
())
def
getWebSite
(
self
):
return
self
.
portal
.
web_site_module
.
erp5_officejs_support_request_ui
class
TestSupportRequestCreateNewSupportRequest
(
SupportRequestTestCase
):
def
test_submit_support_request
(
self
):
self
.
getWebSite
().
SupportRequestModule_createSupportRequest
(
description
=
'<b>Help !!!</b>'
,
file
=
None
,
# FIXME: resource passed by the UI should be full relative URL
resource
=
'erp5_officejs_support_request_ui_test_service_001'
,
# resource=self.portal.service_module.erp5_officejs_support_request_ui_test_service_001.getRelativeUrl(),
title
=
self
.
id
(),
project
=
'erp5_officejs_support_request_ui_test_project_001'
,
# FIXME: project passed by the UI should be full relative URL
#project=self.portal.project_module.erp5_officejs_support_request_ui_test_project_001.getRelativeUrl()
source_reference
=
'xxx-message-id'
)
# this creates synchronoulsy a support request
support_request
,
=
[
sr
for
sr
in
self
.
portal
.
support_request_module
.
contentValues
()
if
sr
.
getTitle
()
==
self
.
id
()]
# the API to get comments works before ingestion, thanks to portal_session
self
.
assertEqual
(
[
dict
(
user
=
self
.
user
.
getTitle
(),
text
=
'<b>Help !!!</b>'
,
attachment_link
=
None
,
attachment_name
=
None
,
message_id
=
'xxx-message-id'
),],
ignoreKeys
(
json
.
loads
(
support_request
.
SupportRequest_getCommentPostListAsJson
()),
'date'
))
# another activity will create a web message
self
.
tic
()
self
.
assertEqual
(
'submitted'
,
support_request
.
getSimulationState
()
)
self
.
assertEqual
(
self
.
portal
.
project_module
.
erp5_officejs_support_request_ui_test_project_001
,
support_request
.
getSourceProjectValue
()
)
self
.
assertEqual
(
self
.
portal
.
service_module
.
erp5_officejs_support_request_ui_test_service_001
,
support_request
.
getResourceValue
()
)
self
.
assertEqual
(
self
.
user
,
support_request
.
getDestinationDecisionValue
())
web_message
,
=
support_request
.
getFollowUpRelatedValueList
(
portal_type
=
'Web Message'
)
self
.
assertEqual
(
'stopped'
,
web_message
.
getSimulationState
())
self
.
assertEqual
(
'<b>Help !!!</b>'
,
web_message
.
asStrippedHTML
())
self
.
assertEqual
(
self
.
user
,
web_message
.
getSourceValue
())
self
.
assertIsNotNone
(
web_message
.
getResourceValue
())
self
.
assertIsNotNone
(
web_message
.
getStartDate
())
# there's a html post
post
,
=
web_message
.
getAggregateValueList
(
portal_type
=
'HTML Post'
)
self
.
assertEqual
(
'<b>Help !!!</b>'
,
str
(
post
.
getData
()))
# the API to get comments works even after ingested
self
.
assertEqual
(
[
dict
(
user
=
self
.
user
.
getTitle
(),
text
=
'<b>Help !!!</b>'
,
date
=
web_message
.
getStartDate
().
ISO8601
(),
attachment_link
=
None
,
attachment_name
=
None
,
message_id
=
'xxx-message-id'
),],
json
.
loads
(
support_request
.
SupportRequest_getCommentPostListAsJson
()))
def
test_submit_support_request_with_attachment
(
self
):
self
.
getWebSite
().
SupportRequestModule_createSupportRequest
(
description
=
'<b>Look at this file !</b>'
,
file
=
FileUpload
(
"the text content"
),
# FIXME: resource passed by the UI should be full relative URL
resource
=
'erp5_officejs_support_request_ui_test_service_001'
,
# resource=self.portal.service_module.erp5_officejs_support_request_ui_test_service_001.getRelativeUrl(),
title
=
self
.
id
(),
project
=
'erp5_officejs_support_request_ui_test_project_001'
,
# FIXME: project passed by the UI should be full relative URL
#project=self.portal.project_module.erp5_officejs_support_request_ui_test_project_001.getRelativeUrl()
source_reference
=
'xxx-message-id'
,
)
support_request
,
=
[
sr
for
sr
in
self
.
portal
.
support_request_module
.
contentValues
()
if
sr
.
getTitle
()
==
self
.
id
()]
# the API to get comments works before ingestion, thanks to portal_session
self
.
assertEqual
(
[
dict
(
user
=
self
.
user
.
getTitle
(),
text
=
'<b>Look at this file !</b>'
,
attachment_name
=
'attached_file.txt'
,
message_id
=
'xxx-message-id'
),],
ignoreKeys
(
json
.
loads
(
support_request
.
SupportRequest_getCommentPostListAsJson
()),
'date'
,
'attachment_link'
))
self
.
tic
()
web_message
,
=
support_request
.
getFollowUpRelatedValueList
(
portal_type
=
'Web Message'
)
self
.
assertEqual
(
'stopped'
,
web_message
.
getSimulationState
())
self
.
assertEqual
(
'<b>Look at this file !</b>'
,
web_message
.
asStrippedHTML
())
# there's a html post
post
,
=
web_message
.
getAggregateValueList
(
portal_type
=
'HTML Post'
)
self
.
assertEqual
(
'<b>Look at this file !</b>'
,
str
(
post
.
getData
()))
file_post
,
=
post
.
getSuccessorValueList
()
self
.
assertEqual
(
'the text content'
,
str
(
file_post
.
getData
()))
# a text was ingested from the file post
file_document
,
=
web_message
.
getAggregateValueList
(
portal_type
=
'Text'
)
self
.
assertEqual
(
'attached_file.txt'
,
file_document
.
getFilename
())
self
.
assertEqual
(
'the text content'
,
str
(
file_document
.
getData
()))
self
.
assertEqual
(
[
dict
(
user
=
self
.
user
.
getTitle
(),
text
=
'<b>Look at this file !</b>'
,
date
=
web_message
.
getStartDate
().
ISO8601
(),
attachment_name
=
'attached_file.txt'
,
attachment_link
=
file_document
.
getRelativeUrl
(),
message_id
=
'xxx-message-id'
)],
json
.
loads
(
support_request
.
SupportRequest_getCommentPostListAsJson
()))
class
TestSupportRequestCommentOnExistingSupportRequest
(
SupportRequestTestCase
):
def
test_comment_on_support_request
(
self
):
support_request
=
self
.
portal
.
support_request_module
.
erp5_officejs_support_request_ui_test_support_reuqest_001
self
.
portal
.
PostModule_createHTMLPostForSupportRequest
(
follow_up
=
support_request
.
getRelativeUrl
(),
predecessor
=
None
,
data
=
"<p>Hello !</p>"
,
file
=
None
,
source_reference
=
"xxx-message-id"
,
web_site_relative_url
=
self
.
getWebSite
().
getRelativeUrl
(),
)
# the API to get comments works before ingestion, thanks to portal_session
self
.
assertEqual
(
[
dict
(
user
=
self
.
user
.
getTitle
(),
text
=
'<p>Hello !</p>'
,
attachment_link
=
None
,
attachment_name
=
None
,
message_id
=
'xxx-message-id'
),],
ignoreKeys
(
json
.
loads
(
support_request
.
SupportRequest_getCommentPostListAsJson
()),
'date'
))
self
.
tic
()
web_message
,
=
support_request
.
getFollowUpRelatedValueList
(
portal_type
=
'Web Message'
)
self
.
assertEqual
(
'<p>Hello !</p>'
,
web_message
.
asStrippedHTML
())
# the API to get comments also works once ingested
self
.
assertEqual
(
[
dict
(
user
=
self
.
user
.
getTitle
(),
text
=
'<p>Hello !</p>'
,
date
=
web_message
.
getStartDate
().
ISO8601
(),
attachment_link
=
None
,
attachment_name
=
None
,
message_id
=
'xxx-message-id'
),],
json
.
loads
(
support_request
.
SupportRequest_getCommentPostListAsJson
()))
def
test_comment_on_support_request_with_attachment
(
self
):
support_request
=
self
.
portal
.
support_request_module
.
erp5_officejs_support_request_ui_test_support_reuqest_001
self
.
portal
.
PostModule_createHTMLPostForSupportRequest
(
follow_up
=
support_request
.
getRelativeUrl
(),
predecessor
=
None
,
data
=
"<p>Please look at the <b>attached file</b></p>"
,
file
=
FileUpload
(
"the text content"
),
source_reference
=
"xxx-message-id"
,
web_site_relative_url
=
self
.
getWebSite
().
getRelativeUrl
(),
)
# the API to get comments works before ingestion, thanks to portal_session
self
.
assertEqual
(
[
dict
(
user
=
self
.
user
.
getTitle
(),
text
=
'<p>Please look at the <b>attached file</b></p>'
,
attachment_name
=
'attached_file.txt'
,
message_id
=
'xxx-message-id'
),],
ignoreKeys
(
json
.
loads
(
support_request
.
SupportRequest_getCommentPostListAsJson
()),
'date'
,
'attachment_link'
))
self
.
tic
()
web_message
,
=
support_request
.
getFollowUpRelatedValueList
(
portal_type
=
'Web Message'
)
self
.
assertEqual
(
'<p>Please look at the <b>attached file</b></p>'
,
web_message
.
asStrippedHTML
())
# a text document was ingested from the file post
file_document
,
=
web_message
.
getAggregateValueList
(
portal_type
=
'Text'
)
self
.
assertEqual
(
'attached_file.txt'
,
file_document
.
getFilename
())
self
.
assertEqual
(
'the text content'
,
str
(
file_document
.
getData
()))
# the API to get comments also works once ingested
self
.
assertEqual
(
[
dict
(
user
=
self
.
user
.
getTitle
(),
text
=
'<p>Please look at the <b>attached file</b></p>'
,
date
=
web_message
.
getStartDate
().
ISO8601
(),
attachment_link
=
file_document
.
getRelativeUrl
(),
attachment_name
=
'attached_file.txt'
,
message_id
=
'xxx-message-id'
),],
json
.
loads
(
support_request
.
SupportRequest_getCommentPostListAsJson
()))
def
test_html_escape
(
self
):
support_request
=
self
.
portal
.
support_request_module
.
erp5_officejs_support_request_ui_test_support_reuqest_001
self
.
portal
.
PostModule_createHTMLPostForSupportRequest
(
follow_up
=
support_request
.
getRelativeUrl
(),
predecessor
=
None
,
data
=
"<p>look <script>alert('haha')</script></p>"
,
file
=
FileUpload
(
"the text content"
),
source_reference
=
"xxx-message-id"
,
web_site_relative_url
=
self
.
getWebSite
().
getRelativeUrl
(),
)
self
.
tic
()
web_message
,
=
support_request
.
getFollowUpRelatedValueList
(
portal_type
=
'Web Message'
)
post
,
=
web_message
.
getAggregateValueList
(
portal_type
=
'HTML Post'
)
# on the web message, the HTML is escaped for safety
self
.
assertEqual
(
'<p>look </p>'
,
web_message
.
getTextContent
())
# but the post follow the "store what user entered as-is" rule.
# (so looking at posts can be dangerous)
self
.
assertEqual
(
"<p>look <script>alert('haha')</script></p>"
,
str
(
post
.
getData
()))
def
test_support_request_comment_include_other_event_type
(
self
):
support_request
=
self
.
portal
.
support_request_module
.
erp5_officejs_support_request_ui_test_support_reuqest_001
event
=
self
.
portal
.
event_module
.
newContent
(
portal_type
=
'Note'
,
source_value
=
self
.
user
,
follow_up_value
=
support_request
,
resource_value
=
self
.
portal
.
service_module
.
erp5_officejs_support_request_ui_test_service_001
,
text_content
=
"Notes from meeting..."
,
start_date
=
DateTime
(
2001
,
1
,
1
),
)
event
.
start
()
event
.
stop
()
self
.
tic
()
self
.
assertEqual
(
[
dict
(
user
=
self
.
user
.
getTitle
(),
text
=
"Notes from meeting..."
,
date
=
DateTime
(
2001
,
1
,
1
).
ISO8601
(),
attachment_link
=
None
,
attachment_name
=
None
,)],
ignoreKeys
(
json
.
loads
(
support_request
.
SupportRequest_getCommentPostListAsJson
()),
'message_id'
))
bt5/erp5_officejs_support_request_ui_test/TestTemplateItem/portal_components/test.erp5.testSupportRequest.xml
0 → 100644
View file @
c9f33e7e
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Test Component"
module=
"erp5.portal_type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_recorded_property_dict
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
default_reference
</string>
</key>
<value>
<string>
testSupportRequest
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
test.erp5.testSupportRequest
</string>
</value>
</item>
<item>
<key>
<string>
language
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Test Component
</string>
</value>
</item>
<item>
<key>
<string>
sid
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
text_content_error_message
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
text_content_warning_message
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
version
</string>
</key>
<value>
<string>
erp5
</string>
</value>
</item>
<item>
<key>
<string>
workflow_history
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
component_validation_workflow
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAQ=
</string>
</persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"4"
aka=
"AAAAAAAAAAQ="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.patches.WorkflowTool"
/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key>
<string>
action
</string>
</key>
<value>
<string>
validate
</string>
</value>
</item>
<item>
<key>
<string>
validation_state
</string>
</key>
<value>
<string>
validated
</string>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
bt5/erp5_officejs_support_request_ui_test/bt/template_test_id_list
View file @
c9f33e7e
test.erp5.testFunctionalSupportRequest
test.erp5.testFunctionalSupportRequest
\ No newline at end of file
test.erp5.testSupportRequest
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment