[Erp5-report] r26181 - /erp5/trunk/products/ERP5/tests/testMovementGroup.py

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Mar 27 12:44:55 CET 2009


Author: luke
Date: Fri Mar 27 12:44:51 2009
New Revision: 26181

URL: http://svn.erp5.org?rev=26181&view=rev
Log:
 - add more business templates to have order and delivery documents
 - add tests for Order and DeliveryCausalityAssignment Movement Groups
 - check that builder raises proper exception if there is duplicated key used to update delivery

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

Modified: erp5/trunk/products/ERP5/tests/testMovementGroup.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testMovementGroup.py?rev=26181&r1=26180&r2=26181&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testMovementGroup.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testMovementGroup.py [utf8] Fri Mar 27 12:44:51 2009
@@ -34,12 +34,16 @@
 
 class MovementGroupTestCase(ERP5TypeTestCase):
   def getBusinessTemplateList(self):
-    return ('erp5_base', )
+    return ('erp5_base', 'erp5_pdm', 'erp5_trade')
 
   def afterSetUp(self):
     self.builder = self.portal.portal_deliveries.newContent(
-                              portal_type='Delivery Builder',
-                              id='test_builder')
+          portal_type='Delivery Builder',
+          delivery_module = 'internal_packing_list_module',
+          delivery_portal_type = 'Internal Packing List',
+          delivery_line_portal_type = 'Internal Packing List Line',
+          delivery_cell_portal_type = 'Internal Packing List Cell',
+      )
     self.folder = self.portal.portal_simulation.newContent(
                               portal_type='Applied Rule')
     
@@ -210,9 +214,165 @@
     self.assertEquals(1, len(group_list))
     self.assertEquals(dict(), group_list[0].getGroupEditDict())
 
+class TestOrderMovementGroup(MovementGroupTestCase):
+  """Tests Order Movement Group - grouping and separating by
+  root Applied Rule Causality, in case if that causality is Order"""
+  document_portal_type = 'Sale Order'
+  def test_order_movement_group_grouping(self):
+    order = self.portal.getDefaultModule(self.document_portal_type) \
+      .newContent(portal_type=self.document_portal_type)
+    applied_rule = self.portal.portal_simulation.newContent(
+      portal_type='Applied Rule',
+      causality_value = order
+    )
+
+    movement_list = (
+      applied_rule.newContent(portal_type='Simulation Movement'),
+      applied_rule.newContent(portal_type='Simulation Movement')
+    )
+
+    self.builder.newContent(
+                  portal_type='Order Movement Group',
+                  collect_order_group='delivery')
+
+    movement_group_node = self.builder.collectMovement(movement_list)
+    group_list = movement_group_node.getGroupList()
+    self.assertEquals(1, len(group_list))
+    self.assertEquals(dict(causality_list=[order.getRelativeUrl()]),
+                      group_list[0].getGroupEditDict())
+
+  def test_order_movement_group_separating(self):
+    order_1 = self.portal.getDefaultModule(self.document_portal_type) \
+      .newContent(portal_type=self.document_portal_type)
+    applied_rule_1 = self.portal.portal_simulation.newContent(
+      portal_type='Applied Rule',
+      causality_value = order_1
+    )
+
+    order_2 = self.portal.getDefaultModule(self.document_portal_type) \
+      .newContent(portal_type=self.document_portal_type)
+    applied_rule_2 = self.portal.portal_simulation.newContent(
+      portal_type='Applied Rule',
+      causality_value = order_2
+    )
+
+    movement_list = (
+      applied_rule_1.newContent(portal_type='Simulation Movement'),
+      applied_rule_2.newContent(portal_type='Simulation Movement')
+    )
+
+    self.builder.newContent(
+                  portal_type='Order Movement Group',
+                  collect_order_group='delivery')
+
+    movement_group_node = self.builder.collectMovement(movement_list)
+    group_list = movement_group_node.getGroupList()
+    self.assertEquals(2, len(group_list))
+    self.assertEquals(1, len([group for group in group_list if
+      group.getGroupEditDict() == dict(causality_list=[order_1.getRelativeUrl()])]))
+    self.assertEquals(1, len([group for group in group_list if
+      group.getGroupEditDict() == dict(causality_list=[order_2.getRelativeUrl()])]))
+
+class TestOrderMovementGroupDelivery(TestOrderMovementGroup):
+  """Tests Order Movement Group - grouping and separating by
+  root Applied Rule Causality, in case if that causality is Delivery"""
+  document_portal_type = 'Sale Packing List'
+
+class TestDeliveryCausalityAssignmentMovementGroup(MovementGroupTestCase):
+  """Tests Delivery Causality Assignment Movement Group
+  This Movement Group never separates"""
+  order_portal_type = 'Sale Order'
+  order_line_portal_type = 'Sale Order Line'
+  delivery_portal_type = 'Sale Packing List'
+  delivery_line_portal_type = 'Sale Packing List Line'
+
+  def test_delivery_causality_assignment_movement_group(self):
+    order = self.portal.getDefaultModule(self.order_portal_type) \
+      .newContent(portal_type=self.order_portal_type)
+    order_line_1 = order.newContent(portal_type=self.order_line_portal_type)
+    order_line_2 = order.newContent(portal_type=self.order_line_portal_type)
+
+    delivery_1 = self.portal.getDefaultModule(self.delivery_portal_type) \
+      .newContent(portal_type=self.delivery_portal_type)
+    delivery_1_line = delivery_1.newContent(portal_type=self.delivery_line_portal_type)
+
+    delivery_2 = self.portal.getDefaultModule(self.delivery_portal_type) \
+      .newContent(portal_type=self.delivery_portal_type)
+    delivery_2_line = delivery_2.newContent(portal_type=self.delivery_line_portal_type)
+
+    applied_rule = self.portal.portal_simulation.newContent(
+      portal_type='Applied Rule',
+      causality_value = order
+    )
+    order_movement_list = (
+      applied_rule.newContent(
+        portal_type='Simulation Movement',
+        order_value = order_line_1,
+        delivery_value = delivery_1_line),
+      applied_rule.newContent(
+        portal_type='Simulation Movement',
+        order_value = order_line_2,
+        delivery_value = delivery_2_line),
+    )
+
+    movement_list = [
+        q.newContent(portal_type='Applied Rule') \
+        .newContent(portal_type='Simulation Movement') \
+        for q in order_movement_list
+    ]
+
+    self.builder.newContent(
+                  portal_type='Delivery Causality Assignment Movement Group',
+                  collect_order_group='delivery')
+
+    movement_group_node = self.builder.collectMovement(movement_list)
+    group_list = movement_group_node.getGroupList()
+
+    self.assertEquals(1, len(group_list))
+    self.assertEquals(dict(causality_list=[delivery_1.getRelativeUrl(),
+      delivery_2.getRelativeUrl()]),
+                      group_list[0].getGroupEditDict())
+
+class TestDuplicatedKeyRaiseException(MovementGroupTestCase):
+  """Test, that it is not allowed to have more than one movement group to update
+  same key during building process"""
+  document_portal_type = 'Sale Order'
+  def test(self):
+    from Products.ERP5.Document.OrderBuilder import DuplicatedPropertyDictKeysError
+    order = self.portal.getDefaultModule(self.document_portal_type) \
+      .newContent(portal_type=self.document_portal_type)
+    applied_rule = self.portal.portal_simulation.newContent(
+      portal_type='Applied Rule',
+      causality_value = order
+    )
+
+    movement_list = (
+      applied_rule.newContent(portal_type='Simulation Movement'),
+      applied_rule.newContent(portal_type='Simulation Movement')
+    )
+
+    self.builder.newContent(
+                  portal_type='Order Movement Group',
+                  collect_order_group='delivery')
+
+    self.builder.newContent(
+                  portal_type='Order Movement Group',
+                  collect_order_group='delivery')
+
+    movement_relative_url_list = [q.getRelativeUrl() for q in movement_list]
+    self.assertRaises(
+      DuplicatedPropertyDictKeysError,
+      self.builder.build,
+      movement_relative_url_list = movement_relative_url_list
+    )
 
 def test_suite():
   suite = unittest.TestSuite()
   suite.addTest(unittest.makeSuite(TestPropertyMovementGroup))
   suite.addTest(unittest.makeSuite(TestPropertyAssignmentMovementGroup))
+  suite.addTest(unittest.makeSuite(TestOrderMovementGroup))
+  suite.addTest(unittest.makeSuite(TestOrderMovementGroupDelivery))
+  suite.addTest(unittest.makeSuite(TestDeliveryCausalityAssignmentMovementGroup))
+  suite.addTest(unittest.makeSuite(TestDuplicatedKeyRaiseException))
   return suite
+




More information about the Erp5-report mailing list