[Erp5-report] r24103 - /erp5/trunk/products/CMFActivity/tests/testCMFActivity.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Oct 8 17:48:21 CEST 2008
Author: vincent
Date: Wed Oct 8 17:48:08 2008
New Revision: 24103
URL: http://svn.erp5.org?rev=24103&view=rev
Log:
Add a test for error paths: error data must be present on the message itself. There are 2 (4, actualy) error paths not covered, since they rely on code present in queues (commit after activity execution), and it's not possible to extract message object after error was processed, so it cannot be unit tested. Message commit must be moved to Message.__call__ and ActivityTool.invokeGroup for those cases to be testable.
Modified:
erp5/trunk/products/CMFActivity/tests/testCMFActivity.py
Modified: erp5/trunk/products/CMFActivity/tests/testCMFActivity.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/tests/testCMFActivity.py?rev=24103&r1=24102&r2=24103&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/tests/testCMFActivity.py (original)
+++ erp5/trunk/products/CMFActivity/tests/testCMFActivity.py Wed Oct 8 17:48:08 2008
@@ -2965,6 +2965,69 @@
LOG('Testing... ',0,message)
self.CheckLocalizerWorks('SQLDict')
+ def testMessageContainsFailureTraceback(self, quiet=0, run=run_all_test):
+ if not run: return
+ if not quiet:
+ message = '\nCheck message contains failure traceback'
+ ZopeTestCase._print(message)
+ LOG('Testing... ',0,message)
+ portal = self.getPortalObject()
+ activity_tool = self.getActivityTool()
+ def checkMessage(message):
+ self.assertNotEqual(message.getExecutionState(), 1) # 1 == MESSAGE_EXECUTED
+ self.assertEqual(message.exc_type, KeyError)
+ self.assertNotEqual(message.traceback, None)
+ # With Message.__call__
+ # 1: activity context does not exist when activity is executed
+ organisation = portal.organisation_module.newContent(portal_type='Organisation')
+ get_transaction().commit()
+ self.tic()
+ organisation.activate().getTitle() # This generates the mssage we want to test.
+ get_transaction().commit()
+ message_list = activity_tool.getMessageList()
+ self.assertEqual(len(message_list), 1)
+ message = message_list[0]
+ portal.organisation_module._delOb(organisation.id)
+ message(activity_tool)
+ checkMessage(message)
+ activity_tool.manageCancel(message.object_path, message.method_id)
+ # 2: activity method does not exist when activity is executed
+ portal.organisation_module.activate().this_method_does_not_exist()
+ get_transaction().commit()
+ message_list = activity_tool.getMessageList()
+ self.assertEqual(len(message_list), 1)
+ message = message_list[0]
+ message(activity_tool)
+ checkMessage(message)
+ activity_tool.manageCancel(message.object_path, message.method_id)
+
+ # With ActivityTool.invokeGroup
+ # 1: activity context does not exist when activity is executed
+ organisation = portal.organisation_module.newContent(portal_type='Organisation')
+ get_transaction().commit()
+ self.tic()
+ organisation.activate().getTitle() # This generates the mssage we want to test.
+ get_transaction().commit()
+ message_list = activity_tool.getMessageList()
+ self.assertEqual(len(message_list), 1)
+ message = message_list[0]
+ portal.organisation_module._delOb(organisation.id)
+ activity_tool.invokeGroup('getTitle', [message])
+ checkMessage(message)
+ activity_tool.manageCancel(message.object_path, message.method_id)
+ # 2: activity method does not exist when activity is executed
+ portal.organisation_module.activate().this_method_does_not_exist()
+ get_transaction().commit()
+ message_list = activity_tool.getMessageList()
+ self.assertEqual(len(message_list), 1)
+ message = message_list[0]
+ activity_tool.invokeGroup('this_method_does_not_exist', [message])
+ checkMessage(message)
+ activity_tool.manageCancel(message.object_path, message.method_id)
+
+ # Unadressed error paths (in both cases):
+ # 3: activity commit raises
+ # 4: activity raises
def test_suite():
suite = unittest.TestSuite()
More information about the Erp5-report
mailing list