[Erp5-report] r27855 - /erp5/trunk/products/ERP5/tests/testBPMCore.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Jul 1 17:30:57 CEST 2009


Author: fabien
Date: Wed Jul  1 17:30:55 2009
New Revision: 27855

URL: http://svn.erp5.org?rev=27855&view=rev
Log:
- add one more test to check a more complex scheme of inheritance
- change existing test test_TradeConditionTradeModelLineCircularComposition, because now no exception are raised in case of circular depency (the model already added areignored)

Modified:
    erp5/trunk/products/ERP5/tests/testBPMCore.py

Modified: erp5/trunk/products/ERP5/tests/testBPMCore.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testBPMCore.py?rev=27855&r1=27854&r2=27855&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testBPMCore.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testBPMCore.py [utf8] Wed Jul  1 17:30:55 2009
@@ -1530,10 +1530,9 @@
     trade_condition_1.setSpecialiseValue(trade_condition_2)
     trade_condition_2.setSpecialiseValue(trade_condition_1)
 
-    from Products.ERP5Type.Document.TradeCondition import CircularException
-    self.assertRaises(
-      CircularException,
-      trade_condition_1.getTradeModelLineComposedList
+    self.assertEquals(trade_condition_1. \
+        findSpecialiseValueList(trade_condition_1),
+        [trade_condition_1, trade_condition_2]
     )
 
   def test_TradeConditionTradeModelLineBasicComposition(self):
@@ -1761,6 +1760,44 @@
     self.assertEquals([q.getReference() for q in trade_model_line_list],
         [q.getReference() for q in [G, F, E, D, C, B, A]])
 
+  def test_getComplexTradeModelLineComposedList(self):
+    """Test that list of contribution/application relations is sorted to do easy traversal
+
+    Let assume such graph of contribution/application dependency:
+
+             /--------\
+            /          \
+      A----+ -----B-----+-D
+            \          /
+             \----C---/
+
+    It shall return list which is sorted like:
+      * A (BC) D
+    where everything in parenthesis can be not sorted
+    """
+    trade_condition = self.createTradeCondition()
+
+    C = self.createTradeModelLine(trade_condition, reference='C',
+        base_contribution_list=['base_amount/total'],
+        base_application_list=['base_amount/total_discount'])
+
+    A = self.createTradeModelLine(trade_condition, reference='A',
+        base_contribution_list=['base_amount/total', 'base_amount/total_tax',
+          'base_amount/total_discount'],
+        base_application_list=['base_amount/tax'])
+
+    D = self.createTradeModelLine(trade_condition, reference='D',
+        base_application_list=['base_amount/total'])
+
+    B = self.createTradeModelLine(trade_condition, reference='B',
+        base_contribution_list=['base_amount/total'],
+        base_application_list=['base_amount/total_tax'])
+
+    trade_model_line_list = trade_condition.getTradeModelLineComposedList()
+
+    # XXX: This is only one good possible sorting
+    self.assertEquals([q.getReference() for q in trade_model_line_list],
+        [q.getReference() for q in [A, B, C, D]])
 
   def test_getAggregatedAmountList(self):
     """




More information about the Erp5-report mailing list