[Erp5-report] r29318 - in /erp5/trunk/products: ERP5/tests/ ERP5Type/tests/
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Sep 30 14:09:55 CEST 2009
Author: luke
Date: Wed Sep 30 14:09:52 2009
New Revision: 29318
URL: http://svn.erp5.org?rev=29318&view=rev
Log:
- allow to pass full import path and test class
- rewrite current lists to use full paths, optimise a bit
- remove no more needed real methods
- cleanup imports
Modified:
erp5/trunk/products/ERP5/tests/testERP5Interfaces.py
erp5/trunk/products/ERP5Type/tests/testERP5TypeInterfaces.py
Modified: erp5/trunk/products/ERP5/tests/testERP5Interfaces.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testERP5Interfaces.py?rev=29318&r1=29317&r2=29318&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testERP5Interfaces.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testERP5Interfaces.py [utf8] Wed Sep 30 14:09:52 2009
@@ -27,74 +27,59 @@
##############################################################################
from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
-from Products.ERP5Type.tests.testERP5TypeInterfaces import makeTestMethod, \
- addTestMethodDynamically
-from zope.interface.verify import verifyClass
+from Products.ERP5Type.tests.testERP5TypeInterfaces import addTestMethodDynamically
import unittest
# this list can be generated automatically using introspection or can be set
# manually and treated as reference to what implements what
implements_tuple_list = [
- ('BusinessPath', 'IArrowBase'),
- ('BusinessPath', 'IBusinessPath'),
- ('BusinessPath', 'ICategoryAccessProvider'),
- ('DeliveryLine', 'IDivergenceSolver'),
- ('TradeCondition', 'ITransformation'),
- ('TradeModelCell', 'ITransformation'),
- ('TradeModelCell', 'IVariated'),
- ('TradeModelLine', 'ITransformation'),
- ('TradeModelLine', 'IVariated'),
- ('TradeModelRule', 'IPredicate'),
- ('TradeModelRule', 'IRule'),
- ('Transformation', 'ITransformation'),
- ('Transformation', 'IVariated'),
- ('TransformationRule', 'IPredicate'),
- ('TransformationRule', 'IRule'),
- ('TransformedResource', 'IVariated'),
+ (('Products.ERP5Type.Document.BusinessPath','BusinessPath'), 'IArrowBase'),
+ (('Products.ERP5Type.Document.BusinessPath','BusinessPath'), 'IBusinessPath'),
+ (('Products.ERP5Type.Document.BusinessPath','BusinessPath'), 'ICategoryAccessProvider'),
+ (('Products.ERP5Type.Document.DeliveryLine', 'DeliveryLine'), 'IDivergenceSolver'),
+ (('Products.ERP5Type.Document.TradeCondition','TradeCondition'), 'ITransformation'),
+ (('Products.ERP5Type.Document.TradeModelCell','TradeModelCell'), 'ITransformation'),
+ (('Products.ERP5Type.Document.TradeModelCell','TradeModelCell'), 'IVariated'),
+ (('Products.ERP5Type.Document.TradeModelLine','TradeModelLine'), 'ITransformation'),
+ (('Products.ERP5Type.Document.TradeModelLine','TradeModelLine'), 'IVariated'),
+ (('Products.ERP5Type.Document.TradeModelRule','TradeModelRule'), 'IPredicate'),
+ (('Products.ERP5Type.Document.TradeModelRule','TradeModelRule'), 'IRule'),
+ (('Products.ERP5Type.Document.Transformation','Transformation'), 'ITransformation'),
+ (('Products.ERP5Type.Document.Transformation','Transformation'), 'IVariated'),
+ (('Products.ERP5Type.Document.TransformationRule','TransformationRule'), 'IPredicate'),
+ (('Products.ERP5Type.Document.TransformationRule','TransformationRule'), 'IRule'),
+ (('Products.ERP5Type.Document.TransformedResource','TransformedResource'), 'IVariated'),
#IDocument
- ('Document', 'IDocument'),
- ('Image', 'IDocument'),
- ('File', 'IDocument'),
- ('OOoDocument', 'IDocument'),
- ('TextDocument', 'IDocument'),
- ('EmailDocument', 'IDocument'),
- ('Event', 'IDocument'),
- #IMovementGroup
- ('MovementGroup', 'IMovementGroup'),
- ('BaseVariantMovementGroup', 'IMovementGroup'),
- ('CategoryMovementGroup', 'IMovementGroup'),
- ('CausalityAssignmentMovementGroup', 'IMovementGroup'),
- ('CausalityMovementGroup', 'IMovementGroup'),
- ('DayMovementGroup', 'IMovementGroup'),
- ('DeliveryCausalityAssignmentMovementGroup', 'IMovementGroup'),
- ('FirstCausalityMovementGroup', 'IMovementGroup'),
- ('MonthlyRangeMovementGroup', 'IMovementGroup'),
- ('NestedLineMovementGroup', 'IMovementGroup'),
- ('OrderMovementGroup', 'IMovementGroup'),
- ('ParentExplanationMovementGroup', 'IMovementGroup'),
- ('PropertyAssignmentMovementGroup', 'IMovementGroup'),
- ('PropertyMovementGroup', 'IMovementGroup'),
- ('QuantitySignMovementGroup', 'IMovementGroup'),
- ('RequirementMovementGroup', 'IMovementGroup'),
- ('RootAppliedRuleCausalityMovementGroup', 'IMovementGroup'),
- ('SplitMovementGroup', 'IMovementGroup'),
- ('TaxLineDeliveryMovementGroup', 'IMovementGroup'),
- ('TitleMovementGroup', 'IMovementGroup'),
- ('VariantMovementGroup', 'IMovementGroup'),
- ('VariationPropertyMovementGroup', 'IMovementGroup'),
+ (('Products.ERP5Type.Document.Document', 'Document'), 'IDocument'),
+ (('Products.ERP5Type.Document.Image', 'Image'), 'IDocument'),
+ (('Products.ERP5Type.Document.File', 'File'), 'IDocument'),
+ (('Products.ERP5Type.Document.OOoDocument', 'OOoDocument'), 'IDocument'),
+ (('Products.ERP5Type.Document.TextDocument', 'TextDocument'), 'IDocument'),
+ (('Products.ERP5Type.Document.EmailDocument', 'EmailDocument'), 'IDocument'),
+ (('Products.ERP5Type.Document.Event', 'Event'), 'IDocument'),
+ # IAggregatedAmountList
+ (('Products.ERP5.AggregatedAmountList', 'AggregatedAmountList'), 'IAggregatedAmountList'),
]
+# IMovementGroup
+for movement_group_class_name in ['MovementGroup', 'BaseVariantMovementGroup',
+ 'CategoryMovementGroup', 'CausalityAssignmentMovementGroup',
+ 'CausalityMovementGroup', 'DayMovementGroup',
+ 'DeliveryCausalityAssignmentMovementGroup', 'FirstCausalityMovementGroup',
+ 'MonthlyRangeMovementGroup', 'NestedLineMovementGroup',
+ 'OrderMovementGroup', 'ParentExplanationMovementGroup',
+ 'PropertyAssignmentMovementGroup', 'PropertyMovementGroup',
+ 'QuantitySignMovementGroup', 'RequirementMovementGroup',
+ 'RootAppliedRuleCausalityMovementGroup', 'SplitMovementGroup',
+ 'TaxLineDeliveryMovementGroup', 'TitleMovementGroup',
+ 'VariantMovementGroup', 'VariationPropertyMovementGroup']:
+ implements_tuple_list.append((('Products.ERP5Type.Document.%s' % \
+ movement_group_class_name, movement_group_class_name),
+ 'IMovementGroup'))
class TestERP5Interfaces(ERP5TypeTestCase):
"""Tests implementation of interfaces"""
- def test_AggregatedAmountList_implements_IAggregatedAmountList(self):
- # AggregatedAmountList is not a document
- from Products.ERP5.interfaces.aggregated_amount_list \
- import IAggregatedAmountList
- from Products.ERP5.AggregatedAmountList import AggregatedAmountList
- verifyClass(IAggregatedAmountList, AggregatedAmountList)
-
-addTestMethodDynamically()
+addTestMethodDynamically(TestERP5Interfaces, implements_tuple_list)
def test_suite():
suite = unittest.TestSuite()
Modified: erp5/trunk/products/ERP5Type/tests/testERP5TypeInterfaces.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/testERP5TypeInterfaces.py?rev=29318&r1=29317&r2=29318&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/testERP5TypeInterfaces.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/testERP5TypeInterfaces.py [utf8] Wed Sep 30 14:09:52 2009
@@ -30,61 +30,51 @@
from zope.interface.verify import verifyClass
import unittest
+implements_tuple_list = [
+ (('Products.ERP5Type.ObjectMessage', 'ObjectMessage'), 'IObjectMessage'),
+ (('Products.ERP5Type.ConsistencyMessage', 'ConsistencyMessage'),
+ 'IObjectMessage'),
+ (('Products.ERP5Type.DivergenceMessage', 'DivergenceMessage'),
+ 'IObjectMessage'),
+ (('Products.ERP5Type.ConsistencyMessage', 'ConsistencyMessage'),
+ 'IConsistencyMessage'),
+ (('Products.ERP5Type.DivergenceMessage', 'DivergenceMessage'),
+ 'IDivergenceMessage'),
+]
+
class TestERP5TypeInterfaces(ERP5TypeTestCase):
"""Tests implementation of interfaces"""
- def test_ObjectMessage_implements_IObjectMessage(self):
- from Products.ERP5Type.interfaces.object_message import IObjectMessage
- from Products.ERP5Type.ObjectMessage import ObjectMessage
- verifyClass(IObjectMessage, ObjectMessage)
-
- def test_ConsistencyMessage_implements_IObjectMessage(self):
- from Products.ERP5Type.interfaces.object_message import IObjectMessage
- from Products.ERP5Type.ConsistencyMessage import ConsistencyMessage
- verifyClass(IObjectMessage, ConsistencyMessage)
-
- def test_ConsistencyMessage_implements_IConsistencyMessage(self):
- from Products.ERP5Type.interfaces.consistency_message \
- import IConsistencyMessage
- from Products.ERP5Type.ConsistencyMessage import ConsistencyMessage
- verifyClass(IConsistencyMessage, ConsistencyMessage)
-
- def test_DivergenceMessage_implements_IObjectMessage(self):
- from Products.ERP5Type.interfaces.object_message import IObjectMessage
- from Products.ERP5Type.DivergenceMessage import DivergenceMessage
- verifyClass(IObjectMessage, DivergenceMessage)
-
- def test_DivergenceMessage_implements_IDivergenceMessage(self):
- from Products.ERP5Type.interfaces.divergence_message import IDivergenceMessage
- from Products.ERP5Type.DivergenceMessage import DivergenceMessage
- verifyClass(IDivergenceMessage, DivergenceMessage)
-
-def makeTestMethod(document, interface):
+def makeTestMethod(import_tuple, interface):
"""Common method which checks if documents implements interface"""
def testMethod(self):
- _temp = __import__('Products.ERP5Type.Document.%s' % document, globals(),
- locals(), ['%s' % document])
- Document = getattr(_temp, document)
+ _temp = __import__(import_tuple[0], globals(), locals(),
+ ['%s' % import_tuple[1]])
+ Klass = getattr(_temp, import_tuple[1])
_temp = __import__('Products.ERP5Type.interfaces', globals(), locals(),
['%s' % interface])
Interface = getattr(_temp, interface)
- verifyClass(Interface, Document)
+ verifyClass(Interface, Klass)
return testMethod
-def addTestMethodDynamically():
+def addTestMethodDynamically(test_class, implements_tuple_list):
"""Creates test methods on the fly
- Uses naming test_<DocumentClass>_implements_<InterfaceClass>
+ Uses naming
+ test_<ImportPathOfClass>_<ImplementationClass>_implements_<InterfaceClass>
+
It is possible to use --run_only on those dynamically generated methods"""
- for document, interface in implements_tuple_list:
- method_name = 'test_%s_implements_%s' % (document, interface)
- method = makeTestMethod(document, interface)
- setattr(TestERP5Interfaces, method_name, method)
+ for import_tuple, interface in implements_tuple_list:
+ method_name = '_'.join(
+ ('test',) + import_tuple + ('implements',) + (interface, )
+ )
+ method = makeTestMethod(import_tuple, interface)
+ setattr(test_class, method_name, method)
# Note: Enable this method when implements_tuple_list will be filled
-#addTestMethodDynamically()
+addTestMethodDynamically(TestERP5TypeInterfaces, implements_tuple_list)
def test_suite():
suite = unittest.TestSuite()
More information about the Erp5-report
mailing list