[Erp5-report] r20386 - /erp5/trunk/products/ERP5Form/tests/testOOoChart.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Apr 9 15:57:36 CEST 2008
Author: thibaut
Date: Wed Apr 9 15:57:35 2008
New Revision: 20386
URL: http://svn.erp5.org?rev=20386&view=rev
Log:
add test when field OOochart is a proxyfield
Modified:
erp5/trunk/products/ERP5Form/tests/testOOoChart.py
Modified: erp5/trunk/products/ERP5Form/tests/testOOoChart.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/tests/testOOoChart.py?rev=20386&r1=20385&r2=20386&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/tests/testOOoChart.py (original)
+++ erp5/trunk/products/ERP5Form/tests/testOOoChart.py Wed Apr 9 15:57:35 2008
@@ -36,6 +36,7 @@
from Acquisition import aq_base
from Products.ERP5Type.Utils import get_request
from Products.ERP5OOo.Document.OOoDocument import STANDARD_IMAGE_FORMAT_LIST
+from Products.ERP5Type.Core.Folder import Folder
HTTP_OK = 200
debug = 0
@@ -43,6 +44,7 @@
class TestOOoChart(ERP5TypeTestCase, ZopeTestCase.Functional):
"""Tests OOoChart a and this render for ERP5."""
form_id = 'TestOOochart_viewForm'
+ ooo_chart_id = 'my_ooochart'
nb_persons = 10
content_type = 'application/vnd.oasis.opendocument.graphics'
skin = 'ODG'
@@ -57,39 +59,46 @@
self.auth = 'ERP5TypeTestCase:'
portal = self.getPortal()
container = portal.portal_skins.custom
- container._setObject(self.form_id, ERP5Form(self.form_id, 'View'))
- form = getattr(container, self.form_id)
- # create some persons in person_module
- self.createPersons()
- # add a ListBox field
- form.manage_addField('listbox', 'listbox', 'ListBox')
- form.listbox.ListBox_setPropertyList(field_list_method='zCountDocumentPerOwner',
- field_count_method='',
- field_columns=['owner | Owner',
- 'owner_count | Owner Count',
- 'number_count | Reference Count'],
- )
-
- # create a Field OOoChart
- form.manage_addField('my_OOoChart', 'my_OOoChart', 'OOoChart')
- form.my_OOoChart.manage_edit_xmlrpc(dict(form_id=self.form_id, field_id='listbox'))
-
- # create a ZSQL Method
- sql = """SELECT owner, count(uid) AS owner_count,
- count(reference) AS number_count
- FROM catalog
- WHERE portal_type = 'Person'
- GROUP BY owner ORDER BY owner_count DESC"""
-
- template = String(source_string=sql)
- container.manage_addProduct['ZSQLMethods'].manage_addZSQLMethod('zCountDocumentPerOwner', 'zCountDocumentPerOwner', 'erp5_sql_connection', '', template)
- # enable preference
- preference = self.getPortal().portal_preferences.default_site_preference
- preference.setPriority(1)
- if preference.getPreferenceState() == 'disabled':
- self.getWorkflowTool().doActionFor(ob=preference,
- action='enable_action',
- wf_id='preference_workflow')
+ if self.form_id not in container.objectIds():
+ container._setObject(self.form_id, ERP5Form(self.form_id, 'View'))
+ form = getattr(container, self.form_id)
+
+ # create some persons in person_module
+ self.createPersons()
+ # add a ListBox field
+ form.manage_addField('listbox', 'listbox', 'ListBox')
+ form.listbox.ListBox_setPropertyList(field_list_method='zCountDocumentPerOwner',
+ field_count_method='',
+ field_columns=['owner | Owner',
+ 'owner_count | Owner Count',
+ 'number_count | Reference Count'],
+ )
+
+ # create a Field OOoChart
+ form.manage_addField(self.ooo_chart_id, self.ooo_chart_id, 'OOoChart')
+
+ # create a Field OOoChart
+ form.manage_addField('your_ooochart', 'your_ooochart', 'OOoChart')
+
+
+
+ # create a ZSQL Method
+ sql = """SELECT owner, count(uid) AS owner_count,
+ count(reference) AS number_count
+ FROM catalog
+ WHERE portal_type = 'Person'
+ GROUP BY owner ORDER BY owner_count DESC"""
+
+ template = String(source_string=sql)
+ container.manage_addProduct['ZSQLMethods'].manage_addZSQLMethod('zCountDocumentPerOwner', 'zCountDocumentPerOwner', 'erp5_sql_connection', '', template)
+ # enable preference
+ preference = self.getPortal().portal_preferences.default_site_preference
+ preference.setPriority(1)
+ if preference.getPreferenceState() == 'disabled':
+ self.getWorkflowTool().doActionFor(ob=preference,
+ action='enable_action',
+ wf_id='preference_workflow')
+
self.validator = Validator()
get_transaction().commit()
self.tic()
@@ -112,7 +121,9 @@
self.assertTrue(self.form_id in portal.portal_skins.custom.objectIds())
getattr(aq_base(portal.portal_skins.custom), self.form_id)
form = getattr(portal.portal_skins.custom, self.form_id)
- listbox = form.listbox
+ #listbox = form.listbox
+ listbox = getattr(form, 'listbox')
+ self.assertEquals(listbox.meta_type, 'ListBox')
request = get_request()
request['here'] = portal.portal_skins.custom
line_list = [l for l in listbox.get_value('default',
@@ -123,10 +134,12 @@
self.assertEquals(2, len(line_list))
# Does the field OOoChart exist ?
- OOoChart = form.my_OOoChart
- response = self.publish(
- '/%s/%s/my_OOoChart?render_format=&display=medium'
- % (self.portal.getId(), self.form_id), self.auth )
+ ooochart = getattr(form, self.ooo_chart_id)
+ self.assertEquals(ooochart.meta_type, 'OOoChart')
+
+ response = self.publish(
+ '/%s/%s/%s?render_format=&display=medium'
+ % (self.portal.getId(), self.form_id, self.ooo_chart_id), self.auth )
# test render raw
self.assertEquals(HTTP_OK, response.getStatus())
content_type = response.getHeader('content-type')
@@ -153,7 +166,7 @@
doc_build = libxml2.parseDoc(content_xml_build)
xpath = '//@*[name() = "office:value"]'
values = doc_build.xpathEval(xpath)
- # Test the datas presence in the file XML
+ # Test the data presence in the file XML
self.assertNotEquals(0, len(values))
# 2 values because there are - 10 document created by a owner
# - 0 Reference count
@@ -163,43 +176,136 @@
# render image
for image_format in STANDARD_IMAGE_FORMAT_LIST:
response = self.publish(
- '/%s/%s/my_OOoChart?render_format=%s&display=medium'
- % (self.portal.getId(), self.form_id, image_format), self.auth )
+ '/%s/%s/%s?render_format=%s&display=medium'
+ % (self.portal.getId(), self.form_id, self.ooo_chart_id, image_format), self.auth )
self.assertEquals(HTTP_OK, response.getStatus(), '%s rendering failed: %s' % (image_format, response.getStatus()))
# render pdf
response = self.publish(
- '/%s/%s/my_OOoChart?render_format=pdf&display=medium'
- % (self.portal.getId(), self.form_id), self.auth )
+ '/%s/%s/%s?render_format=pdf&display=medium'
+ % (self.portal.getId(), self.form_id, self.ooo_chart_id), self.auth )
self.assertEquals(HTTP_OK, response.getStatus())
# Change some params and restart (circle, bar, ...)
# chart type : circle
- form.my_OOoChart.manage_edit_xmlrpc(dict(chart_type='chart:circle'))
- response = self.publish(
- '/%s/%s/my_OOoChart?render_format=&display=medium'
- % (self.portal.getId(), self.form_id), self.auth )
+ form.my_ooochart.manage_edit_xmlrpc(dict(chart_type='chart:circle'))
+ response = self.publish(
+ '/%s/%s/%s?render_format=&display=medium'
+ % (self.portal.getId(), self.form_id, self.ooo_chart_id), self.auth )
# Test ODG (zip) with other params
body = response.getBody()
# Test Validation Relax NG
self._validate(body)
# chart type : line
- form.my_OOoChart.manage_edit_xmlrpc(dict(chart_type='chart:line'))
- response = self.publish(
- '/%s/%s/my_OOoChart?render_format=&display=medium'
- % (self.portal.getId(), self.form_id), self.auth )
+ form.my_ooochart.manage_edit_xmlrpc(dict(chart_type='chart:line'))
+ response = self.publish(
+ '/%s/%s/%s?render_format=&display=medium'
+ % (self.portal.getId(), self.form_id, self.ooo_chart_id), self.auth )
# Test ODG (zip) with other params
body = response.getBody()
# Test Validation Relax NG
self._validate(body)
#chart type : scatter
- form.my_OOoChart.manage_edit_xmlrpc(dict(chart_type='chart:scatter'))
- response = self.publish(
- '/%s/%s/my_OOoChart?render_format=&display=medium'
- % (self.portal.getId(), self.form_id), self.auth )
+ form.my_ooochart.manage_edit_xmlrpc(dict(chart_type='chart:scatter'))
+ response = self.publish(
+ '/%s/%s/%s?render_format=&display=medium'
+ % (self.portal.getId(), self.form_id, self.ooo_chart_id), self.auth )
+ # Test ODG (zip) with other params
+ body = response.getBody()
+ # Test Validation Relax NG
+ self._validate(body)
+
+ def test_proxy_ooo_chart(self):
+ portal = self.getPortal()
+ # Does the form exist ?
+ self.assertTrue(self.form_id in portal.portal_skins.custom.objectIds())
+ getattr(aq_base(portal.portal_skins.custom), self.form_id)
+ form = getattr(portal.portal_skins.custom, self.form_id)
+
+ #Proxify the Field my_ooochart
+ form.proxifyField({self.ooo_chart_id:'TestOOochart_viewForm.your_ooochart'})
+ # Does the field OOoChart exist ?
+ ooochart = getattr(form, self.ooo_chart_id)
+ self.assertEquals(ooochart.meta_type, 'ProxyField')
+ response = self.publish(
+ '/%s/%s/%s?render_format=&display=medium'
+ % (self.portal.getId(), self.form_id, self.ooo_chart_id), self.auth )
+ # test render raw
+ self.assertEquals(HTTP_OK, response.getStatus())
+ content_type = response.getHeader('content-type')
+
+ # test content type : application/vnd.oasis.opendocument.graphics
+ self.assertTrue(content_type.startswith(self.content_type), content_type)
+ content_disposition = response.getHeader('content-disposition')
+ self.assertEquals('inline', content_disposition.split(';')[0])
+ # Test ODG (zip)
+ body = response.getBody()
+ # Test Validation Relax NG
+ self._validate(body)
+
+ from Products.ERP5OOo.OOoUtils import OOoParser
+ parser = OOoParser()
+ parser.openFromString(body)
+ content_xml_view = parser.oo_files['content.xml']
+ import libxml2
+ doc_view = libxml2.parseDoc(content_xml_view)
+ xpath = '//@*[name() = "xlink:href"]'
+ num_object = doc_view.xpathEval(xpath)[0].content[2:]
+
+ content_xml_build = parser.oo_files['%s/content.xml' % num_object]
+ doc_build = libxml2.parseDoc(content_xml_build)
+ xpath = '//@*[name() = "office:value"]'
+ values = doc_build.xpathEval(xpath)
+ # Test the data presence in the file XML
+ self.assertNotEquals(0, len(values))
+ # 2 values because there are - 10 document created by a owner
+ # - 0 Reference count
+ self.assertEquals(2, len(values))
+
+ # Test the differents render
+ # render image
+ for image_format in STANDARD_IMAGE_FORMAT_LIST:
+ response = self.publish(
+ '/%s/%s/%s?render_format=%s&display=medium'
+ % (self.portal.getId(), self.form_id, self.ooo_chart_id, image_format), self.auth )
+ self.assertEquals(HTTP_OK, response.getStatus(), '%s rendering failed: %s' % (image_format, response.getStatus()))
+
+ # render pdf
+ response = self.publish(
+ '/%s/%s/%s?render_format=pdf&display=medium'
+ % (self.portal.getId(), self.form_id, self.ooo_chart_id), self.auth )
+ self.assertEquals(HTTP_OK, response.getStatus())
+
+
+ # Change some params and restart (circle, bar, ...)
+ # chart type : circle
+ form.my_ooochart.manage_edit_xmlrpc(dict(chart_type='chart:circle'))
+ response = self.publish(
+ '/%s/%s/%s?render_format=&display=medium'
+ % (self.portal.getId(), self.form_id, self.ooo_chart_id), self.auth )
+ # Test ODG (zip) with other params
+ body = response.getBody()
+ # Test Validation Relax NG
+ self._validate(body)
+
+ # chart type : line
+ form.my_ooochart.manage_edit_xmlrpc(dict(chart_type='chart:line'))
+ response = self.publish(
+ '/%s/%s/%s?render_format=&display=medium'
+ % (self.portal.getId(), self.form_id, self.ooo_chart_id), self.auth )
+ # Test ODG (zip) with other params
+ body = response.getBody()
+ # Test Validation Relax NG
+ self._validate(body)
+
+ #chart type : scatter
+ form.my_ooochart.manage_edit_xmlrpc(dict(chart_type='chart:scatter'))
+ response = self.publish(
+ '/%s/%s/%s?render_format=&display=medium'
+ % (self.portal.getId(), self.form_id, self.ooo_chart_id), self.auth )
# Test ODG (zip) with other params
body = response.getBody()
# Test Validation Relax NG
More information about the Erp5-report
mailing list