[Erp5-report] r26512 - in /erp5/trunk/products/ERP5: Document/ tests/

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Apr 20 10:44:59 CEST 2009


Author: seb
Date: Mon Apr 20 10:44:57 2009
New Revision: 26512

URL: http://svn.erp5.org?rev=26512&view=rev
Log:
- fix a very old small error that makes impossible to call a builder
  safely several time (we have to look if there is delivery link
  from the simulation movement to a non simulation document) 
- add unit test in order to make sure that we can call a builder
  2 times in the same transaction without any problem

Modified:
    erp5/trunk/products/ERP5/Document/DeliveryBuilder.py
    erp5/trunk/products/ERP5/tests/testPackingList.py

Modified: erp5/trunk/products/ERP5/Document/DeliveryBuilder.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/DeliveryBuilder.py?rev=26512&r1=26511&r2=26512&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/DeliveryBuilder.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/DeliveryBuilder.py [utf8] Mon Apr 20 10:44:57 2009
@@ -129,7 +129,7 @@
       movement_list = select_method(**kw)
     # XXX Use buildSQLQuery will be better
     movement_list = [x for x in movement_list if \
-                     x.getDeliveryRelatedValueList()==[]]
+                     x.getDeliveryValueList()==[]]
     # XXX  Add predicate test
     # XXX FIXME Check that there is no double in the list
     # Because we can't trust simulation_select_method

Modified: erp5/trunk/products/ERP5/tests/testPackingList.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testPackingList.py?rev=26512&r1=26511&r2=26512&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testPackingList.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testPackingList.py [utf8] Mon Apr 20 10:44:57 2009
@@ -64,6 +64,17 @@
                       stepCheckDeliveryBuilding \
                       stepCheckPackingListIsNotDivergent \
                       stepCheckOrderPackingList '
+
+  confirmed_order_without_packing_list = default_order_sequence + '\
+                      stepCreateNotVariatedResource \
+                      stepTic \
+                      stepCreateOrderLine \
+                      stepSetOrderLineResource \
+                      stepSetOrderLineDefaultValues \
+                      stepOrderOrder \
+                      stepTic \
+                      stepConfirmOrder \
+                      stepTic '
 
   default_sequence_with_duplicated_lines = default_order_sequence + '\
                       stepCreateNotVariatedResource \
@@ -1337,6 +1348,37 @@
     if err_list:
       self.fail(''.join(err_list))
 
+  def test_15_CheckBuilderCanBeCalledTwiveSafely(self):
+    """
+    Builder design should allows to call the build method as many times as we 
+    want. Make sure that we will not have duplicated packing list if build is 
+    called several times.
+    """
+    delivery_builder = getattr(self.getPortalObject().portal_deliveries, 
+                               self.delivery_builder_id)
+ 
+    def doNothing(self, *args, **kw):
+      pass
+    original_delivery_builder_build =  delivery_builder.__class__.build
+
+    try:
+      # We patch the delivery builder to make sure that it will not be
+      # called by activities
+      delivery_builder.__class__.build = doNothing
+      sequence_list = SequenceList()
+
+      # Test with a simply order without cell
+      sequence_string = self.confirmed_order_without_packing_list
+      sequence_list.addSequenceString(sequence_string)
+      sequence_list.play(self)
+
+      # Now restore the build method and make sure first call returns document
+      delivery_builder.__class__.build = original_delivery_builder_build
+      self.assertTrue(len(delivery_builder.build()) > 0)
+      # The second call should returns empty result even if tic not called
+      self.assertTrue(len(delivery_builder.build()) ==  0)
+    finally:
+      delivery_builder.build = original_delivery_builder_build
 
 class TestPurchasePackingListMixin(TestPackingListMixin):
   """Mixing class with steps to test purchase packing lists.




More information about the Erp5-report mailing list