[Erp5-report] r9691 - /erp5/trunk/products/ERP5/tests/testBase.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Sep 6 13:35:09 CEST 2006
Author: jerome
Date: Wed Sep 6 13:35:07 2006
New Revision: 9691
URL: http://svn.erp5.org?rev=9691&view=rev
Log:
add tests for ERP5PropertyManager
Modified:
erp5/trunk/products/ERP5/tests/testBase.py
Modified: erp5/trunk/products/ERP5/tests/testBase.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testBase.py?rev=9691&r1=9690&r2=9691&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testBase.py (original)
+++ erp5/trunk/products/ERP5/tests/testBase.py Wed Sep 6 13:35:07 2006
@@ -32,8 +32,11 @@
#
from random import randint
-
-import os, sys
+import os
+import sys
+import unittest
+import time
+
if __name__ == '__main__':
execfile(os.path.join(sys.path[0], 'framework.py'))
@@ -51,8 +54,6 @@
from Products.ERP5Type.DateUtils import addToDate
from Products.ERP5Type.tests.Sequence import Sequence, SequenceList
from zExceptions import BadRequest
-import time
-import os
from Products.ERP5Type import product_path
from Products.CMFCore.utils import getToolByName
from Products.ERP5Type.Tool.ClassTool import _aq_reset
@@ -876,6 +877,83 @@
self.assertEquals('', obj.getProperty("title"))
self.assertEquals('', obj.getTitle())
+class TestERP5PropertyManager(unittest.TestCase):
+ """Tests for ERP5PropertyManager.
+ """
+ def _makeOne(self, *args, **kw):
+ from Products.ERP5Type.patches.PropertyManager import ERP5PropertyManager
+ ob = ERP5PropertyManager(*args, **kw)
+ # add missing methods for createExpressionContext
+ ob.getPortalObject = lambda : None
+ ob.absolute_url = lambda: ''
+ return ob
+
+ def test_setProperty(self):
+ """_setProperty adds a new property if not present."""
+ ob = self._makeOne('ob')
+ dummy_property_value = 'test string value'
+ ob._setProperty('a_dummy_property', dummy_property_value)
+
+ # the property appears in property map
+ self.failUnless('a_dummy_property' in [x['id'] for x in ob.propertyMap()])
+ # the value and can be retrieved using getProperty
+ self.assertEquals(ob.getProperty('a_dummy_property'), dummy_property_value)
+ # the value is also stored as a class attribute
+ self.assertEquals(ob.a_dummy_property, dummy_property_value)
+
+ def test_setPropertyExistingProperty(self):
+ """_setProperty raises an error if the property already exists."""
+ ob = self._makeOne('ob')
+ # make sure that title property exists
+ self.failUnless('title' in [x['id'] for x in ob.propertyMap()])
+ # trying to call _setProperty will with an existing property raises:
+ # BadRequest: Invalid or duplicate property id: title
+ self.assertRaises(BadRequest, ob._setProperty, 'title', 'property value')
+
+ def test_updatePropertyExistingProperty(self):
+ """_updateProperty should be used if the existing property already exists.
+ """
+ ob = self._makeOne('ob')
+ # make sure that title property exists
+ self.failUnless('title' in [x['id'] for x in ob.propertyMap()])
+ prop_value = 'title value'
+ ob._updateProperty('title', prop_value)
+ self.assertEquals(ob.getProperty('title'), prop_value)
+ self.assertEquals(ob.title, prop_value)
+
+ def test_setPropertyTypeInt(self):
+ """You can specify the type of the property in _setProperty"""
+ ob = self._makeOne('ob')
+ dummy_property_value = 3
+ ob._setProperty('a_dummy_property', dummy_property_value, type='int')
+ self.assertEquals(['int'], [x['type'] for x in ob.propertyMap()
+ if x['id'] == 'a_dummy_property'])
+ self.assertEquals(type(ob.getProperty('a_dummy_property')), type(1))
+
+ def test_setPropertyTALESType(self):
+ """ERP5PropertyManager can use TALES Type for properties, TALES will then
+ be evaluated in getProperty.
+ """
+ ob = self._makeOne('ob')
+ dummy_property_value = 'python: 1+2'
+ ob._setProperty('a_dummy_property', dummy_property_value, type='tales')
+ self.assertEquals(ob.getProperty('a_dummy_property'), 1+2)
+
+ def test_getPropertyNonExistantProps(self):
+ """getProperty return None if the value is not found.
+ """
+ ob = self._makeOne('ob')
+ self.assertEquals(ob.getProperty('a_dummy_property'), None)
+
+ def test_getPropertyDefaultValue(self):
+ """getProperty accepts a default value, if the property is not defined.
+ """
+ ob = self._makeOne('ob')
+ self.assertEquals(ob.getProperty('a_dummy_property', 100), 100)
+ prop_value = 3
+ ob._setProperty('a_dummy_property', prop_value)
+ self.assertEquals(ob.getProperty('a_dummy_property', 100), prop_value)
+
if __name__ == '__main__':
framework()
else:
@@ -883,4 +961,5 @@
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestBase))
+ suite.addTest(unittest.makeSuite(TestERP5PropertyManager))
return suite
More information about the Erp5-report
mailing list