[Erp5-report] r13415 - in /erp5/trunk/products/CMFActivity: Activity/ skins/activity/ tests/

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Mar 14 14:49:04 CET 2007


Author: vincent
Date: Wed Mar 14 14:49:01 2007
New Revision: 13415

URL: http://svn.erp5.org?rev=13415&view=rev
Log:
Do queue new activities even if there is already activities on same object with same method id but with different tag.
Add a unit test for this feature (and general behaviour of the key function behind this).

Modified:
    erp5/trunk/products/CMFActivity/Activity/SQLDict.py
    erp5/trunk/products/CMFActivity/skins/activity/SQLDict_readMessageList.zsql
    erp5/trunk/products/CMFActivity/tests/testCMFActivity.py

Modified: erp5/trunk/products/CMFActivity/Activity/SQLDict.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/Activity/SQLDict.py?rev=13415&r1=13414&r2=13415&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/Activity/SQLDict.py (original)
+++ erp5/trunk/products/CMFActivity/Activity/SQLDict.py Wed Mar 14 14:49:01 2007
@@ -120,12 +120,12 @@
 
   def isMessageRegistered(self, activity_buffer, activity_tool, m):
     uid_set = activity_buffer.getUidSet(self)
-    return (tuple(m.object_path), m.method_id) in uid_set
+    return (tuple(m.object_path), m.method_id, m.activity_kw.get('tag')) in uid_set
 
   def registerMessage(self, activity_buffer, activity_tool, m):
     m.is_registered = 1
     uid_set = activity_buffer.getUidSet(self)
-    uid_set.add((tuple(m.object_path), m.method_id))
+    uid_set.add((tuple(m.object_path), m.method_id, m.activity_kw.get('tag')))
     message_list = activity_buffer.getMessageList(self)
     message_list.append(m)
 
@@ -133,7 +133,7 @@
     m.is_registered = 0 # This prevents from inserting deleted messages into the queue
     class_name = self.__class__.__name__
     uid_set = activity_buffer.getUidSet(self)
-    uid_set.discard((tuple(m.object_path), m.method_id))
+    uid_set.discard((tuple(m.object_path), m.method_id, m.activity_kw.get('tag')))
 
   def getRegisteredMessageList(self, activity_buffer, activity_tool):
     message_list = activity_buffer.getMessageList(self)

Modified: erp5/trunk/products/CMFActivity/skins/activity/SQLDict_readMessageList.zsql
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/skins/activity/SQLDict_readMessageList.zsql?rev=13415&r1=13414&r2=13415&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/skins/activity/SQLDict_readMessageList.zsql (original)
+++ erp5/trunk/products/CMFActivity/skins/activity/SQLDict_readMessageList.zsql Wed Mar 14 14:49:01 2007
@@ -35,6 +35,6 @@
 <dtml-if path>AND path = <dtml-sqlvar path type="string"> </dtml-if>
 <dtml-if method_id> AND method_id = <dtml-sqlvar method_id type="string"> </dtml-if>
 GROUP BY
-     path, method_id, processing_node, processing
+     path, method_id, tag, processing_node, processing
 ORDER BY
      priority, date

Modified: erp5/trunk/products/CMFActivity/tests/testCMFActivity.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/tests/testCMFActivity.py?rev=13415&r1=13414&r2=13415&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/tests/testCMFActivity.py (original)
+++ erp5/trunk/products/CMFActivity/tests/testCMFActivity.py Wed Mar 14 14:49:01 2007
@@ -784,6 +784,58 @@
       DB.query = DB.original_query
       del DB.original_query
 
+  def checkIsMessageRegisteredMethod(self, activity):
+    activity_tool = self.getPortal().portal_activities
+    object_a = self.getOrganisationModule()
+    if not object_a.hasContent(self.company_id):
+      object_a.newContent(id=self.company_id)
+    object_b = object_a._getOb(self.company_id)
+    activity_tool.manageClearActivities(keep=0)
+    get_transaction().commit()
+    # First case: creating the same activity twice must only register one.
+    self.assertEquals(len(activity_tool.getMessageList()), 0) # Sanity check
+    object_a.activate(activity=activity).getId()
+    object_a.activate(activity=activity).getId()
+    get_transaction().commit()
+    self.assertEquals(len(activity_tool.getMessageList()), 1)
+    activity_tool.manageClearActivities(keep=0)
+    get_transaction().commit()
+    # Second case: creating activity with same tag must only register one.
+    # This behaviour is actually the same as the no-tag behaviour.
+    self.assertEquals(len(activity_tool.getMessageList()), 0) # Sanity check
+    object_a.activate(activity=activity, tag='foo').getId()
+    object_a.activate(activity=activity, tag='foo').getId()
+    get_transaction().commit()
+    self.assertEquals(len(activity_tool.getMessageList()), 1)
+    activity_tool.manageClearActivities(keep=0)
+    get_transaction().commit()
+    # Third case: creating activities with different tags must register both.
+    self.assertEquals(len(activity_tool.getMessageList()), 0) # Sanity check
+    object_a.activate(activity=activity, tag='foo').getId()
+    object_a.activate(activity=activity, tag='bar').getId()
+    get_transaction().commit()
+    self.assertEquals(len(activity_tool.getMessageList()), 2)
+    activity_tool.manageClearActivities(keep=0)
+    get_transaction().commit()
+    # Fourth case: creating activities on different objects must register
+    # both.
+    self.assertEquals(len(activity_tool.getMessageList()), 0) # Sanity check
+    object_a.activate(activity=activity).getId()
+    object_b.activate(activity=activity).getId()
+    get_transaction().commit()
+    self.assertEquals(len(activity_tool.getMessageList()), 2)
+    activity_tool.manageClearActivities(keep=0)
+    get_transaction().commit()
+    # Fifth case: creating activities with different method must register
+    # both.
+    self.assertEquals(len(activity_tool.getMessageList()), 0) # Sanity check
+    object_a.activate(activity=activity).getId()
+    object_a.activate(activity=activity).getTitle()
+    get_transaction().commit()
+    self.assertEquals(len(activity_tool.getMessageList()), 2)
+    activity_tool.manageClearActivities(keep=0)
+    get_transaction().commit()
+
   def test_01_DeferedSetTitleSQLDict(self, quiet=0, run=run_all_test):
     # Test if we can add a complete sales order
     if not run: return
@@ -1688,6 +1740,17 @@
     get_transaction().commit()
     self.assertEqual(len(activity_tool.getMessageList()), 0)
 
+  def test_78_IsMessageRegisteredSQLDict(self, quiet=0, run=run_all_test):
+    """
+      This test tests behaviour of IsMessageRegistered method.
+    """
+    if not run: return
+    if not quiet:
+      message = '\nTest IsMessageRegistered behaviour with SQLDict'
+      ZopeTestCase._print(message)
+      LOG('Testing... ',0,message)
+    self.checkIsMessageRegisteredMethod('SQLDict')
+
 if __name__ == '__main__':
     framework()
 else:




More information about the Erp5-report mailing list