Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
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
Léo-Paul Géneau
erp5
Commits
2b8f5fba
Commit
2b8f5fba
authored
Jan 04, 2022
by
Cédric Le Ninivin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
erp5_json_form: Add basic test for JSON Form
parent
f80613a6
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
346 additions
and
0 deletions
+346
-0
bt5/erp5_json_form/TestTemplateItem/portal_components/test.erp5.testJSONForm.py
...tTemplateItem/portal_components/test.erp5.testJSONForm.py
+216
-0
bt5/erp5_json_form/TestTemplateItem/portal_components/test.erp5.testJSONForm.xml
...TemplateItem/portal_components/test.erp5.testJSONForm.xml
+127
-0
bt5/erp5_json_form/bt/dependency_list
bt5/erp5_json_form/bt/dependency_list
+1
-0
bt5/erp5_json_form/bt/template_test_id_list
bt5/erp5_json_form/bt/template_test_id_list
+1
-0
bt5/erp5_json_form/bt/test_dependency_list
bt5/erp5_json_form/bt/test_dependency_list
+1
-0
No files found.
bt5/erp5_json_form/TestTemplateItem/portal_components/test.erp5.testJSONForm.py
0 → 100644
View file @
2b8f5fba
##############################################################################
#
# Copyright (c) 2002-2021 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
DateTime
import
DateTime
from
Products.ERP5Type.tests.ERP5TypeTestCase
import
ERP5TypeTestCase
from
Products.ERP5Type.tests.utils
import
createZODBPythonScript
class
Test
(
ERP5TypeTestCase
):
"""
A Sample Test Class
"""
def
afterSetUp
(
self
):
"""
This is ran before anything, used to set the environment
"""
# here, you can create the categories and objects your test will depend on
self
.
createBasicScriptreturnJSONWithTimestamp
()
self
.
tic
()
def
createBasicScriptreturnJSONWithTimestamp
(
self
,
name
=
"ERP5Site_returnJSONWithTimestamp"
,
):
createZODBPythonScript
(
self
.
portal
.
portal_skins
.
custom
,
name
,
"text_data, form_reference"
,
"""
import json
return json.dumps({
"datetime": DateTime().ISO8601(),
"content": text_data,
}, indent=2)
"""
)
return
name
def
fixJSONForm
(
self
,
reference
,
text_content
=
""
,
after_method_id
=
""
):
callables
=
self
.
portal
.
portal_callables
json_form
=
callables
.
get
(
reference
,
None
)
if
not
json_form
:
json_form
=
callables
.
newContent
(
portal_type
=
"JSON Form"
,
title
=
reference
,
reference
=
reference
,
id
=
reference
,
)
json_form
.
edit
(
text_content
=
text_content
,
after_method_id
=
after_method_id
,
)
if
self
.
portal
.
portal_workflow
.
isTransitionPossible
(
json_form
,
'validate'
):
json_form
.
validate
()
def
test_call_valid_json
(
self
):
"""
"""
schema
=
"""{
"$schema": "https://json-schema.org/draft/2019-09/schema",
"$id": "my-schema.json",
"properties":{
"title": {
"type": "string"
}
}
}"""
data
=
{
"title"
:
"foo"
}
method
=
"test_ERP5Site_processSimpleStriingAsJSON"
after_method
=
self
.
createBasicScriptreturnJSONWithTimestamp
()
self
.
fixJSONForm
(
method
,
schema
,
after_method
)
self
.
tic
()
result
=
getattr
(
self
.
portal
,
method
)(
data
)
self
.
assertEqual
(
json
.
loads
(
result
)[
'content'
],
json
.
loads
(
json
.
dumps
(
data
))
)
def
test_call_no_after_method_id_valid_json
(
self
):
"""
"""
schema
=
"""{
"$schema": "https://json-schema.org/draft/2019-09/schema",
"$id": "my-schema.json",
"properties":{
"title": {
"type": "string"
}
}
}"""
data
=
{
"title"
:
"foo"
}
method
=
"test_ERP5Site_processSimpleStriingAsJSON"
self
.
fixJSONForm
(
method
,
schema
,
""
)
self
.
tic
()
result
=
getattr
(
self
.
portal
,
method
)(
data
)
self
.
assertEqual
(
'Nothing to do'
,
result
)
def
test_call_invalid_json_list_errors
(
self
):
"""
"""
schema
=
"""{
"$schema": "https://json-schema.org/draft/2019-09/schema",
"$id": "my-schema.json",
"properties":{
"title": {
"type": "string"
},
"number": {
"type": "integer"
}
}
}"""
json_data
=
{
"title"
:
2
,
"number"
:
"2"
}
method
=
"test_ERP5Site_processSimpleStriingAsJSON"
after_method
=
self
.
createBasicScriptreturnJSONWithTimestamp
()
self
.
fixJSONForm
(
method
,
schema
,
after_method
)
self
.
tic
()
self
.
assertRaises
(
ValueError
,
getattr
(
self
.
portal
,
method
),
json_data
,
list_error
=
True
)
error
=
{
"my-schema.json"
:
[[
u"Validation Error"
,
u"'2' is not of type u'integer'"
],
[
u"Validation Error"
,
u"2 is not of type u'string'"
]]}
try
:
getattr
(
self
.
portal
,
method
)(
json_data
,
list_error
=
True
)
raise
ValueError
(
"No error raised during processing"
)
except
ValueError
,
e
:
self
.
assertEqual
(
error
,
json
.
loads
(
str
(
e
)))
def
test_call_valid_datetime_format
(
self
):
"""
"""
schema
=
"""{
"$schema": "https://json-schema.org/draft/2019-09/schema",
"$id": "my-schema.json",
"properties":{
"timestamp": {
"type": "string",
"format": "date-time"
}
}
}"""
data
=
{
"timestamp"
:
DateTime
().
ISO8601
()
}
method
=
"test_ERP5Site_processSimpleStriingAsJSON"
after_method
=
self
.
createBasicScriptreturnJSONWithTimestamp
()
self
.
fixJSONForm
(
method
,
schema
,
after_method
)
self
.
tic
()
result
=
getattr
(
self
.
portal
,
method
)(
data
)
self
.
assertEqual
(
json
.
loads
(
json
.
dumps
(
data
)),
json
.
loads
(
result
)[
'content'
]
)
def
test_call_invalid_datetime_format
(
self
):
"""
"""
schema
=
"""{
"$schema": "https://json-schema.org/draft/2019-09/schema",
"$id": "my-schema.json",
"properties":{
"timestamp": {
"type": "string",
"format": "date-time"
}
}
}"""
json_data
=
{
"timestamp"
:
"2018-11-13T20:20:67"
}
method
=
"test_ERP5Site_processSimpleStriingAsJSON"
after_method
=
self
.
createBasicScriptreturnJSONWithTimestamp
()
self
.
fixJSONForm
(
method
,
schema
,
after_method
)
self
.
tic
()
self
.
assertRaises
(
ValueError
,
getattr
(
self
.
portal
,
method
),
json_data
,
list_error
=
True
)
error
=
{
"my-schema.json"
:
[[
"Validation Error"
,
u"'2018-11-13T20:20:67' is not a u'date-time'"
]]
}
try
:
getattr
(
self
.
portal
,
method
)(
json_data
,
list_error
=
True
)
raise
ValueError
(
"No error raised during processing"
)
except
ValueError
,
e
:
self
.
assertEqual
(
error
,
json
.
loads
(
str
(
e
)))
bt5/erp5_json_form/TestTemplateItem/portal_components/test.erp5.testJSONForm.xml
0 → 100644
View file @
2b8f5fba
<?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>
testJSONForm
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
test.erp5.testJSONForm
</string>
</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>
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.Workflow"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_log
</string>
</key>
<value>
<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>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_json_form/bt/dependency_list
View file @
2b8f5fba
erp5_base
erp5_json_type
\ No newline at end of file
bt5/erp5_json_form/bt/template_test_id_list
0 → 100644
View file @
2b8f5fba
test.erp5.testJSONForm
\ No newline at end of file
bt5/erp5_json_form/bt/test_dependency_list
0 → 100644
View file @
2b8f5fba
erp5_full_text_mroonga_catalog
\ 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