From 043b6ff994f9f1f4d6b05e62a43126b0b27a0aa1 Mon Sep 17 00:00:00 2001 From: Alexandre Boeglin <alex@nexedi.com> Date: Tue, 16 May 2006 17:00:21 +0000 Subject: [PATCH] - copied step methods from testPackingList - added one simple test case (decrease invoiced quantity, use split and differ solver) git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@7299 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5/tests/testInvoice.py | 140 ++++++++++++++++++++++++++++-- 1 file changed, 131 insertions(+), 9 deletions(-) diff --git a/product/ERP5/tests/testInvoice.py b/product/ERP5/tests/testInvoice.py index a830586f42..cfaa812b67 100644 --- a/product/ERP5/tests/testInvoice.py +++ b/product/ERP5/tests/testInvoice.py @@ -74,6 +74,11 @@ class TestInvoice(TestPackingListMixin, sale_gap = 'fr/pcg/7/70/707/7071/70712' customer_gap = 'fr/pcg/4/41/411' + invoice_portal_type = 'Sale Invoice Transaction' + invoice_line_portal_type = 'Invoice Line' + invoice_cell_portal_type = 'Invoice Cell' + invoice_transaction_line_portal_type = 'Sale Invoice Transaction Line' + def getTitle(self): return "Invoices" @@ -651,6 +656,96 @@ class TestInvoice(TestPackingListMixin, self.assertEquals(len(delivery_mvt.getOrderRelatedValueList( portal_type=self.simulation_movement_portal_type)), 0) + def stepDecreaseInvoiceLineQuantity(self, sequence=None, sequence_list=None, + **kw): + """ + Set a decreased quantity on invoice lines + """ + invoice = sequence.get('invoice') + quantity = sequence.get('line_quantity',default=self.default_quantity) + quantity = quantity -1 + sequence.edit(line_quantity=quantity) + for invoice_line in invoice.objectValues( + portal_type=self.invoice_line_portal_type): + invoice_line.edit(quantity=quantity) + + def stepCheckInvoiceIsCalculating(self, sequence=None, sequence_list=None, + **kw): + """ + Test if invoice is calculating + """ + invoice = sequence.get('invoice') + self.assertEquals('calculating',invoice.getCausalityState()) + + def stepCheckInvoiceIsDiverged(self, sequence=None, sequence_list=None, + **kw): + """ + Test if invoice is diverged + """ + invoice = sequence.get('invoice') + self.assertEquals('diverged',invoice.getCausalityState()) + + def stepCheckInvoiceIsSolved(self, sequence=None, sequence_list=None, + **kw): + """ + Test if invoice is solved + """ + invoice = sequence.get('invoice') + self.assertEquals('solved',invoice.getCausalityState()) + + def stepCheckInvoiceIsDivergent(self, sequence=None, sequence_list=None, + **kw): + """ + Test if invoice is divergent + """ + invoice = sequence.get('invoice') + self.assertTrue(invoice.isDivergent()) + + def stepCheckInvoiceIsNotDivergent(self, sequence=None, sequence_list=None, + **kw): + """ + Test if invoice is not divergent + """ + invoice = sequence.get('invoice') + self.assertFalse(invoice.isDivergent()) + + def stepSplitAndDifferInvoice(self, sequence=None, sequence_list=None, + **kw): + """ + split and differ at the invoice level + """ + invoice = sequence.get('invoice') + invoice.portal_workflow.doActionFor(invoice,'split_prevision_action', + wf_id='invoice_causality_workflow', start_date=self.datetime + + 15, stop_date=self.datetime + 25) + + def stepCheckInvoiceSplitted(self, sequence=None, sequence_list=None, **kw): + """ + Test if invoice was splitted + """ + packing_list = sequence.get('packing_list') + invoice_list = packing_list.getCausalityRelatedValueList( + portal_type=self.invoice_portal_type) + self.assertEquals(2,len(invoice_list)) + invoice1 = None + invoice2 = None + for invoice in invoice_list: + if invoice.getUid() == sequence.get('invoice').getUid(): + invoice1 = invoice + else: + invoice2 = invoice + sequence.edit(new_invoice=invoice2) + for line in invoice1.objectValues( + portal_type=self.invoice_line_portal_type): + self.assertEquals(self.default_quantity-1,line.getQuantity()) + for line in invoice2.objectValues( + portal_type=self.invoice_line_portal_type): + self.assertEquals(1,line.getQuantity()) + + + + + # default sequence for one line of not varianted resource. PACKING_LIST_DEFAULT_SEQUENCE = """ stepCreateSaleInvoiceTransactionRule @@ -753,7 +848,7 @@ class TestInvoice(TestPackingListMixin, def test_01_SimpleInvoice(self, quiet=0, run=RUN_ALL_TESTS): """Checks that a Simple Invoice is created from a Packing List""" if not run: return - for base_sequence in (TestInvoice.PACKING_LIST_DEFAULT_SEQUENCE, ) : + for base_sequence in (self.PACKING_LIST_DEFAULT_SEQUENCE, ) : self.playSequence( base_sequence + """ @@ -777,7 +872,7 @@ class TestInvoice(TestPackingListMixin, and an invoice with no accounting rules. both invoices are wrong """ if not run: return - for base_sequence in (TestInvoice.TWO_PACKING_LIST_DEFAULT_SEQUENCE, ) : + for base_sequence in (self.TWO_PACKING_LIST_DEFAULT_SEQUENCE, ) : self.playSequence( base_sequence + """ @@ -806,7 +901,7 @@ class TestInvoice(TestPackingListMixin, movements for this invoice are present twice in the simulation. """ if not run: return - for base_sequence in (TestInvoice.PACKING_LIST_DEFAULT_SEQUENCE, ) : + for base_sequence in (self.PACKING_LIST_DEFAULT_SEQUENCE, ) : self.playSequence( base_sequence + """ @@ -825,7 +920,7 @@ class TestInvoice(TestPackingListMixin, from Order. """ if not run: return - for base_sequence in (TestInvoice.PACKING_LIST_DEFAULT_SEQUENCE, ) : + for base_sequence in (self.PACKING_LIST_DEFAULT_SEQUENCE, ) : self.playSequence( base_sequence + """ @@ -837,7 +932,7 @@ class TestInvoice(TestPackingListMixin, """Checks that editing a Packing List Line still creates a correct Invoice""" if not run: return - for base_sequence in (TestInvoice.PACKING_LIST_DEFAULT_SEQUENCE, ) : + for base_sequence in (self.PACKING_LIST_DEFAULT_SEQUENCE, ) : self.playSequence( base_sequence + """ @@ -856,7 +951,7 @@ class TestInvoice(TestPackingListMixin, """Checks that deleting a Packing List Line still creates a correct Invoice""" if not run: return - for base_sequence in (TestInvoice.PACKING_LIST_TWO_LINES_DEFAULT_SEQUENCE, ) : + for base_sequence in (self.PACKING_LIST_TWO_LINES_DEFAULT_SEQUENCE, ) : self.playSequence( base_sequence + """ @@ -874,9 +969,8 @@ class TestInvoice(TestPackingListMixin, """Checks that adding a Packing List Line still creates a correct Invoice""" if not run: return - for base_sequence in (TestInvoice.PACKING_LIST_DEFAULT_SEQUENCE, - TestInvoice.PACKING_LIST_TWO_LINES_DEFAULT_SEQUENCE) : - # XXX use another sequence that creates 2 lines + for base_sequence in (self.PACKING_LIST_DEFAULT_SEQUENCE, + self.PACKING_LIST_TWO_LINES_DEFAULT_SEQUENCE) : self.playSequence( base_sequence + """ @@ -891,6 +985,34 @@ class TestInvoice(TestPackingListMixin, stepCheckInvoiceBuilding stepRebuildAndCheckNothingIsCreated """) + + #def test_08_InvoiceDecreaseQuantity(self, quiet=0, run=RUN_ALL_TESTS): + def test_08_InvoiceDecreaseQuantity(self, quiet=0, run=1): + """Change the quantity of a Invoice Line, + check that the packing list is divergent, + then split and differ""" + if not run: return + sequence = self.PACKING_LIST_DEFAULT_SEQUENCE + \ + """ + stepSetReadyPackingList + stepTic + stepStartPackingList + stepCheckInvoicingRule + stepTic + stepCheckInvoiceBuilding + + stepDecreaseInvoiceLineQuantity + stepCheckInvoiceIsCalculating + stepSplitAndDifferInvoice + stepTic + stepCheckInvoiceIsSolved + stepCheckInvoiceSplitted + stepCheckPackingListIsDivergent + stepCheckPackingListIsDiverged + + stepRebuildAndCheckNothingIsCreated + """ + self.playSequence(sequence) if __name__ == '__main__': framework() -- 2.30.9