[Erp5-report] r20373 - /erp5/trunk/products/ERP5/tests/testInventoryAPI.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Apr 9 11:37:53 CEST 2008
Author: seb
Date: Wed Apr 9 11:37:53 2008
New Revision: 20373
URL: http://svn.erp5.org?rev=20373&view=rev
Log:
add test to check that we do not allow duplicate inventories
Modified:
erp5/trunk/products/ERP5/tests/testInventoryAPI.py
Modified: erp5/trunk/products/ERP5/tests/testInventoryAPI.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testInventoryAPI.py?rev=20373&r1=20372&r2=20373&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testInventoryAPI.py (original)
+++ erp5/trunk/products/ERP5/tests/testInventoryAPI.py Wed Apr 9 11:37:53 2008
@@ -43,6 +43,7 @@
from Products.ERP5.Document.OrderRule import OrderRule
from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
from Products.ERP5Type.tests.utils import reindex
+from Products.DCWorkflow.DCWorkflow import ValidationFailed
class InventoryAPITestCase(ERP5TypeTestCase):
"""Base class for Inventory API Tests {{{
@@ -1632,6 +1633,7 @@
# TODO: It would be better to strip numbers below seconds instead of below
# days.
self.MAX_DATE = MAX_DATE = DateTime(DateTime().Date()) - 1
+ self.DUPLICATE_INVENTORY_DATE = MAX_DATE - 8 # Newest
self.INVENTORY_DATE_3 = INVENTORY_DATE_3 = MAX_DATE - 10 # Newest
self.INVENTORY_QUANTITY_3 = INVENTORY_QUANTITY_3 = 100000
self.INVENTORY_DATE_2 = INVENTORY_DATE_2 = INVENTORY_DATE_3 - 10
@@ -2000,7 +2002,59 @@
self.getInventory(optimisation__=False,
**inventory_kw))
-
+ def test_14_TwoInventoryWithSameDateAndResourceAndNode(self):
+ """
+ It makes no sense to validate two inventories with same date,
+ same resource, and same node. The calculation of inventories
+ will not work in such case. So here we test that a constraint
+ does not allow such things
+ """
+ portal = self.getPortal()
+ inventory_module = portal.getDefaultModule(portal_type='Inventory')
+ inventory = inventory_module.newContent(portal_type='Inventory')
+ date = self.DUPLICATE_INVENTORY_DATE
+ inventory.edit(destination_value=self.node,
+ destination_section_value=self.section,
+ start_date=date)
+ inventory_line = inventory.newContent(
+ resource_value = self.resource,
+ quantity = 1)
+ self.workflow_tool = portal.portal_workflow
+ workflow_id = 'inventory_workflow'
+ transition_id = 'deliver_action'
+ workflow_id= 'inventory_workflow'
+ self.workflow_tool.doActionFor(inventory, transition_id,
+ wf_id=workflow_id)
+ self.assertEquals('delivered', inventory.getSimulationState())
+ get_transaction().commit()
+ self.tic()
+
+ # We should detect the previous inventory and fails
+ new_inventory = inventory.Base_createCloneDocument(batch_mode=1)
+ self.assertRaises(ValidationFailed, self.workflow_tool.doActionFor,
+ new_inventory, transition_id, wf_id=workflow_id)
+ workflow_history = self.workflow_tool.getInfoFor(ob=new_inventory,
+ name='history', wf_id=workflow_id)
+ workflow_error_message = str(workflow_history[-1]['error_message'])
+ self.assertTrue(workflow_error_message.find('There is already an inventory')>=0)
+
+ # Add a case in order to check a bug when the other inventory at the
+ # same date does not change stock values
+ new_inventory = inventory.Base_createCloneDocument(batch_mode=1)
+ new_inventory.setStartDate(self.DUPLICATE_INVENTORY_DATE + 1)
+ self.workflow_tool.doActionFor(new_inventory, transition_id,
+ wf_id=workflow_id)
+ self.assertEquals('delivered', new_inventory.getSimulationState())
+ get_transaction().commit()
+ self.tic()
+
+ new_inventory = new_inventory.Base_createCloneDocument(batch_mode=1)
+ self.assertRaises(ValidationFailed, self.workflow_tool.doActionFor,
+ new_inventory, transition_id, wf_id=workflow_id)
+ workflow_history = self.workflow_tool.getInfoFor(ob=new_inventory,
+ name='history', wf_id=workflow_id)
+ workflow_error_message = str(workflow_history[-1]['error_message'])
+ self.assertTrue(workflow_error_message.find('There is already an inventory')>=0)
def test_suite():
suite = unittest.TestSuite()
More information about the Erp5-report
mailing list