[Erp5-report] r26706 - /erp5/trunk/products/ERP5/tests/testBPMCore.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Apr 29 13:13:04 CEST 2009
Author: luke
Date: Wed Apr 29 13:13:02 2009
New Revision: 26706
URL: http://svn.erp5.org?rev=26706&view=rev
Log:
- test quantity change on normal invoice behaviour and divergence solving
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=26706&r1=26705&r2=26706&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testBPMCore.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testBPMCore.py [utf8] Wed Apr 29 13:13:02 2009
@@ -37,6 +37,10 @@
from Products.CMFCore.utils import getToolByName
from Products.ERP5Type.tests.utils import reindex
+# XXX TODO:
+# * move test.* methods to other classes, group by testing area
+# * subclass TestBPMMixin from TestInvoiceMixin and refactor methods and style
+
class TestBPMMixin(ERP5TypeTestCase):
"""Skeletons for tests for ERP5 BPM"""
@@ -56,7 +60,7 @@
business_state_portal_type = 'Business State'
modified_order_line_price_ratio = 2.0
- modified_order_line_quantity_ratio = 2.5
+ modified_invoice_line_quantity_ratio = modified_order_line_quantity_ratio = 2.5
modified_packing_list_line_quantity_ratio = 0.4
@@ -120,6 +124,27 @@
trade_phase = 'default/tax'
)
sequence.edit(business_path=None, business_path_taxing=business_path)
+
+ def _solveDivergence(self, obj, property, decision, group='line'):
+ kw = {'%s_group_listbox' % group:{}}
+ for divergence in obj.getDivergenceList():
+ if divergence.getProperty('tested_property') != property:
+ continue
+ sm_url = divergence.getProperty('simulation_movement').getRelativeUrl()
+ kw['line_group_listbox']['%s&%s' % (sm_url, property)] = {
+ 'choice':decision}
+ self.portal.portal_workflow.doActionFor(
+ obj,
+ 'solve_divergence_action',
+ **kw)
+
+ def stepAcceptDecisionQuantityInvoice(self,sequence=None, sequence_list=None):
+ invoice = sequence.get('invoice')
+ self._solveDivergence(invoice, 'quantity', 'accept')
+
+ def stepAdoptPrevisionQuantityInvoice(self,sequence=None, sequence_list=None, **kw):
+ invoice = sequence.get('invoice')
+ self._solveDivergence(invoice, 'quantity', 'adopt')
def stepModifyBusinessPathDiscounting(self, sequence=None,
sequence_string=None):
@@ -348,9 +373,17 @@
tax_amount.getTotalPrice()
)
+ def stepAcceptDecisionInvoice(self, sequence=None, **kw):
+ invoice = sequence.get('invoice')
+ invoice.portal_workflow.doActionFor(invoice,'accept_decision_action')
+
def stepCheckInvoiceCausalityStateSolved(self, sequence=None, **kw):
invoice = sequence.get('invoice')
self.assertEqual('solved', invoice.getCausalityState())
+
+ def stepCheckInvoiceCausalityStateDiverged(self, sequence=None, **kw):
+ invoice = sequence.get('invoice')
+ self.assertEqual('diverged', invoice.getCausalityState())
def stepGetInvoice(self, sequence=None, **kw):
packing_list = sequence.get('packing_list')
@@ -695,6 +728,48 @@
order = sequence.get('order')
order_line = order.newContent(portal_type=self.order_line_portal_type)
sequence.edit(order_line = order_line)
+
+ def stepGetInvoiceLineDiscounted(self, sequence=None, **kw):
+ invoice = sequence.get('invoice')
+ resource = sequence.get('product_discounted')
+ self.assertNotEqual(None, resource)
+ sequence.edit(invoice_line_discounted = [m for m in
+ invoice.getMovementList() if m.getResourceValue() == resource][0])
+
+ def stepGetInvoiceLineDiscountedTaxed(self, sequence=None, **kw):
+ invoice = sequence.get('invoice')
+ resource = sequence.get('product_discounted_taxed')
+ self.assertNotEqual(None, resource)
+ sequence.edit(invoice_line_discounted_taxed = [m for m in
+ invoice.getMovementList() if m.getResourceValue() == resource][0])
+
+ def stepGetInvoiceLineTaxed(self, sequence=None, **kw):
+ invoice = sequence.get('invoice')
+ resource = sequence.get('product_taxed')
+ self.assertNotEqual(None, resource)
+ sequence.edit(invoice_line_taxed = [m for m in
+ invoice.getMovementList() if m.getResourceValue() == resource][0])
+
+ def stepModifyQuantityInvoiceLineTaxed(self, sequence=None, **kw):
+ invoice_line = sequence.get('invoice_line_taxed')
+ invoice_line.edit(
+ quantity=invoice_line.getQuantity() * \
+ self.modified_invoice_line_quantity_ratio,
+ )
+
+ def stepModifyQuantityInvoiceLineDiscounted(self, sequence=None, **kw):
+ invoice_line = sequence.get('invoice_line_discounted')
+ invoice_line.edit(
+ quantity=invoice_line.getQuantity() * \
+ self.modified_invoice_line_quantity_ratio,
+ )
+
+ def stepModifyQuantityInvoiceLineDiscountedTaxed(self, sequence=None, **kw):
+ invoice_line = sequence.get('invoice_line_discounted_taxed')
+ invoice_line.edit(
+ quantity=invoice_line.getQuantity() * \
+ self.modified_invoice_line_quantity_ratio,
+ )
def stepModifyAgainOrderLineTaxed(self, sequence=None, **kw):
order_line = sequence.get('order_line_taxed')
@@ -1115,9 +1190,52 @@
sequence_list.addSequenceString(sequence_string)
sequence_list.play(self)
- def test_TradeModelRuleSimulationBuildInvoiceUpdateAggregatedAmountListDivergencyAndSolving(self):
+ def test_TradeModelRuleSimulationBuildInvoiceNewTradeConditionDivergencyAndSolving(self):
"""Check that after changing trade model invoice is properly diverged and it is possible to solve"""
raise NotImplementedError('TODO')
+
+ def test_TradeModelRuleSimulationBuildInvoiceInvoiceLineModifyDivergencyAndSolving(self):
+ """Check that after changing trade model invoice is properly diverged and it is possible to solve"""
+ sequence_list = SequenceList()
+ sequence_string = self.trade_model_rule_simulation_common_string
+ sequence_string += """
+ ConfirmOrder
+ Tic
+ """ + self.aggregated_amount_simulation_check + """
+ GetPackingList
+ PackPackingList
+ Tic
+ """ + self.aggregated_amount_simulation_check + """
+ StartPackingList
+ StopPackingList
+ DeliverPackingList
+ Tic
+ """ + self.aggregated_amount_simulation_check + """
+ GetInvoice
+ CheckInvoiceCausalityStateSolved
+ CheckInvoiceNormalMovements
+ CheckInvoiceTradeModelRelatedMovements
+
+ GetInvoiceLineDiscounted
+ GetInvoiceLineDiscountedTaxed
+ GetInvoiceLineTaxed
+
+ ModifyQuantityInvoiceLineDiscounted
+ ModifyQuantityInvoiceLineDiscountedTaxed
+ ModifyQuantityInvoiceLineTaxed
+ Tic
+ CheckInvoiceCausalityStateDiverged
+ AcceptDecisionQuantityInvoice
+ Tic
+ CheckInvoiceCausalityStateDiverged
+ AdoptPrevisionQuantityInvoice
+ Tic
+ CheckInvoiceCausalityStateSolved
+ CheckInvoiceNormalMovements
+ CheckInvoiceTradeModelRelatedMovements
+ """
+ sequence_list.addSequenceString(sequence_string)
+ sequence_list.play(self)
def test_TradeModelRuleSimulationBuildInvoiceBuildInvoiceTransactionLines(self):
"""Check that having properly configured invoice transaction rule it invoice transaction lines are nicely generated and have proper amounts"""
More information about the Erp5-report
mailing list