[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