[Erp5-report] r33655 nicolas - /erp5/trunk/products/ERP5Form/tests/testProxyField.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Mar 11 15:58:36 CET 2010
Author: nicolas
Date: Thu Mar 11 15:58:35 2010
New Revision: 33655
URL: http://svn.erp5.org?rev=33655&view=rev
Log:
Add new test to check XML un/serialisation of Forms which contain
ProxyField
Modified:
erp5/trunk/products/ERP5Form/tests/testProxyField.py
Modified: erp5/trunk/products/ERP5Form/tests/testProxyField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/tests/testProxyField.py?rev=33655&r1=33654&r2=33655&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/tests/testProxyField.py [utf8] (original)
+++ erp5/trunk/products/ERP5Form/tests/testProxyField.py [utf8] Thu Mar 11 15:58:35 2010
@@ -29,8 +29,11 @@
from Testing.ZopeTestCase.PortalTestCase import PortalTestCase
from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
from Products.ERP5Type.tests.SecurityTestCase import SecurityTestCase
+from Products.Formulator.XMLToForm import XMLToForm
+from Products.Formulator.FormToXML import formToXML
import transaction
import unittest
+from lxml import etree
class TestProxyField(ERP5TypeTestCase):
"""
@@ -254,3 +257,49 @@
python_script_object.ZPythonScript_edit(python_script_parameter,
python_script_body)
python_script_object(field)
+
+ def test_serializeProxyField(self):
+ """Test formToXML and XMLToForm with proxyfields.
+ """
+ portal_skins = self.getSkinsTool()
+ # Create the default field library with a template field
+ portal_skins.manage_addProduct['OFSP'].manage_addFolder('erp5_geek')
+ skin_folder = portal_skins._getOb('erp5_geek')
+ skin_folder.manage_addProduct['ERP5Form'].addERP5Form(
+ 'Base_viewGeekFieldLibrary',
+ 'View')
+ form = skin_folder._getOb('Base_viewGeekFieldLibrary', None)
+ form.manage_addField('my_title', 'My Geek Title', 'StringField')
+
+ # Custom field library has to have an higher priority
+ selection = portal_skins.getSkinPath('View')
+ selection = selection.split(',')
+ selection.append('erp5_geek')
+ portal_skins.manage_skinLayers(skinpath=tuple(selection),
+ skinname='View', add_skin=1)
+ portal_skins.getPortalObject().changeSkin(None)
+
+ skin_folder = portal_skins._getOb('custom')
+ skin_folder.manage_addProduct['ERP5Form'].addERP5Form('Base_viewGeek',
+ 'View')
+ form = skin_folder._getOb('Base_viewGeek', None)
+ form.manage_addField('my_title', 'Title', 'ProxyField')
+ field = form._getOb('my_title')
+ field.manage_edit_xmlrpc(dict(
+ form_id='Base_viewGeekFieldLibrary', field_id='my_title'))
+ my_title = 'My Custom Proxy Title'
+ field.manage_edit_surcharged_xmlrpc({'title': my_title})
+
+ # Test xml serialisation of form.
+ xml_string = formToXML(form)
+ xml_tree = etree.fromstring(xml_string)
+ field_node = xml_tree.find('groups/group/fields/field')
+ self.assertEquals(field_node.find('type').text, 'ProxyField')
+ self.assertTrue(field_node.find('delegated_list/title') is not None)
+
+ skin_folder.manage_addProduct['ERP5Form'].addERP5Form('Base_viewSuperGeek',
+ 'View')
+ form = skin_folder._getOb('Base_viewSuperGeek')
+ # Test objectification of XML
+ XMLToForm(xml_string, form)
+ self.assertTrue(form.my_title.get_value('title'), my_title)
More information about the Erp5-report
mailing list