[Erp5-report] r28436 - /erp5/trunk/products/ERP5/tests/testBPMEvaluation.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Tue Aug 18 11:40:41 CEST 2009
Author: luke
Date: Tue Aug 18 11:40:40 2009
New Revision: 28436
URL: http://svn.erp5.org?rev=28436&view=rev
Log:
- add comments for checking code
- define builder for invoices
- prove that one business process can be used for processes starting from documents deeper in sequence
- extend completed state lists to meet reality
Modified:
erp5/trunk/products/ERP5/tests/testBPMEvaluation.py
Modified: erp5/trunk/products/ERP5/tests/testBPMEvaluation.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testBPMEvaluation.py?rev=28436&r1=28435&r2=28436&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testBPMEvaluation.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testBPMEvaluation.py [utf8] Tue Aug 18 11:40:40 2009
@@ -59,6 +59,7 @@
packing_list_portal_type = 'Sale Packing List'
packing_list_line_portal_type = 'Sale Packing List Line'
trade_condition_portal_type = 'Sale Trade Condition'
+ invoice_portal_type = 'Sale Invoice Transaction'
product_portal_type = 'Product'
order_start_date = DateTime()
order_stop_date = order_start_date + 10
@@ -126,9 +127,11 @@
# - gather errors into one list
bpm_root_rule = self.root_document.getCausalityRelatedValue(
portal_type='Applied Rule')
+ # check that correct root rule applied
self.assertEqual(bpm_root_rule.getSpecialiseValue().getPortalType(),
self.root_rule_portal_type)
root_simulation_movement_list = bpm_root_rule.contentValues()
+ # simplicity - one simulation movement for one delivery line
self.assertEqual(len(self.root_document.getMovementList()),
len(root_simulation_movement_list))
for root_simulation_movement in root_simulation_movement_list:
@@ -136,6 +139,8 @@
'Simulation Movement')
movement = root_simulation_movement.getOrderValue()
property_problem_list = []
+ # check some properties equality between delivery line and simulation
+ # movement, gather errors
for property in 'resource', 'price', 'quantity', 'start_date', \
'stop_date', 'source', 'destination', 'source_section', \
'destination_section':
@@ -146,11 +151,14 @@
root_simulation_movement.getProperty(property)))
if len(property_problem_list) > 0:
self.fail('\n'.join(property_problem_list))
+ # root rule is order or delivery - so below each movement invoicing one
+ # is expected
self.assertEquals(len(root_simulation_movement.contentValues()), 1)
for bpm_invoicing_rule in root_simulation_movement.contentValues():
self.assertEqual(bpm_invoicing_rule.getPortalType(), 'Applied Rule')
self.assertEqual(bpm_invoicing_rule.getSpecialiseValue() \
.getPortalType(), 'BPM Invoicing Rule')
+ # only one movement inside invoicing rule
self.assertEquals(len(bpm_invoicing_rule.contentValues()), 1)
for invoicing_simulation_movement in bpm_invoicing_rule \
.contentValues():
@@ -159,6 +167,7 @@
self.assertEqual(invoicing_simulation_movement.getCausalityValue(),
self.invoice_path)
property_problem_list = []
+ # check equality of some properties, gather them
for property in 'resource', 'price', 'quantity', 'start_date', \
'stop_date', 'source', 'destination', 'source_section', \
'destination_section':
@@ -169,6 +178,8 @@
invoicing_simulation_movement.getProperty(property)))
if len(property_problem_list) > 0:
self.fail('\n'.join(property_problem_list))
+ # simple check for trade model rule existence, without movements,
+ # as no trade condition configured
self.assertEquals(
len(invoicing_simulation_movement.contentValues()), 1)
for trade_model_rule in invoicing_simulation_movement \
@@ -189,8 +200,8 @@
successor_value=self.delivered_state,
trade_phase='default/delivery',
deliverable=1,
- completed_state_list=['delivered'],
- frozen_state_list=['stopped', 'delivered'],
+ completed_state_list=['started', 'stopped', 'delivered'],
+ frozen_state_list=['started', 'stopped', 'delivered'],
delivery_builder='portal_deliveries/bpm_sale_packing_list_builder',
)
@@ -199,6 +210,7 @@
successor_value=self.invoiced_state,
completed_state_list=['delivered'],
frozen_state_list=['stopped', 'delivered'],
+ delivery_builder='portal_deliveries/bpm_sale_invoice_builder',
trade_phase='default/invoicing')
self.account_path = self.createBusinessPath(self.business_process,
@@ -353,8 +365,50 @@
root_document_line_portal_type = 'Sale Packing List Line'
root_rule_portal_type = 'BPM Delivery Rule'
+ def _packDelivery(self):
+ """Packs delivery fully, removes possible containers before"""
+ self.root_document.deleteContent(self.root_document.contentIds(
+ filter={'portal_type':'Container'}))
+ cont = self.root_document.newContent(portal_type='Container')
+ for movement in self.root_document.getMovementList():
+ cont.newContent(portal_type='Container Line',
+ resource = movement.getResource(), quantity = movement.getQuantity())
+ self.stepTic()
+ self._checkBPMSimulation()
+
def _doFirstTransition(self, document):
document.confirm()
+
+ def test_starting(self):
+ self.delivery_line = self._createRootDocumentLine(
+ resource_value = self._createProduct(), quantity = 10, price = 5)
+ self.stepTic()
+
+ self.root_document.confirm()
+ self.stepTic()
+ self._checkBPMSimulation()
+
+ self._packDelivery()
+
+ self.root_document.start()
+ self.stepTic()
+ self._checkBPMSimulation()
+
+ self.assertEqual(
+ 2,
+ len(self.root_document.getCausalityRelatedList())
+ )
+ self.assertEqual(
+ 'Applied Rule',
+ self.root_document.getCausalityRelatedValue(
+ portal_type='Applied Rule').getPortalType()
+ )
+
+ self.assertEqual(
+ self.invoice_portal_type,
+ self.root_document.getCausalityRelatedValue(
+ portal_type=self.invoice_portal_type).getPortalType()
+ )
class TestInvoice(TestBPMEvaluationMixin, GenericRuleTestsMixin):
"""Check BPM Invoice Rule behaviour"""
@@ -397,7 +451,29 @@
class TestPackingListDifferentProcess(TestPackingList,
TestBPMEvaluationDifferentProcessMixin):
- pass
+ def test_starting(self):
+ self.delivery_line = self._createRootDocumentLine(
+ resource_value = self._createProduct(), quantity = 10, price = 5)
+ self.stepTic()
+
+ self.root_document.confirm()
+ self.stepTic()
+ self._checkBPMSimulation()
+
+ self._packDelivery()
+ self.root_document.start()
+ self.stepTic()
+ self._checkBPMSimulation()
+
+ self.assertEqual(
+ 1,
+ len(self.root_document.getCausalityRelatedList())
+ )
+ self.assertEqual(
+ 'Applied Rule',
+ self.root_document.getCausalityRelatedValue(
+ portal_type='Applied Rule').getPortalType()
+ )
class TestInvoiceDifferentProcess(TestInvoice,
TestBPMEvaluationDifferentProcessMixin):
More information about the Erp5-report
mailing list