[Erp5-report] r29961 - /erp5/trunk/products/ERP5/tests/testReturnedSalePackingList.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Oct 23 11:06:33 CEST 2009
Author: tatuya
Date: Fri Oct 23 11:06:31 2009
New Revision: 29961
URL: http://svn.erp5.org?rev=29961&view=rev
Log:
create returned sale packing list test-cases
Added:
erp5/trunk/products/ERP5/tests/testReturnedSalePackingList.py
Added: erp5/trunk/products/ERP5/tests/testReturnedSalePackingList.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testReturnedSalePackingList.py?rev=29961&view=auto
==============================================================================
--- erp5/trunk/products/ERP5/tests/testReturnedSalePackingList.py (added)
+++ erp5/trunk/products/ERP5/tests/testReturnedSalePackingList.py [utf8] Fri Oct 23 11:06:31 2009
@@ -1,0 +1,570 @@
+##############################################################################
+#
+# Copyright (c) 2009 Nexedi KK and Contributors. All Rights Reserved.
+# Tatuya Kamada <tatuya at nexedi.com>
+#
+# WARNING: This program as such is intended to be used by professional
+# programmers who take the whole responsibility of assessing all potential
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# guarantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+##############################################################################
+
+import unittest
+import transaction
+
+from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
+from zLOG import LOG
+from AccessControl.SecurityManagement import newSecurityManager
+from Products.ERP5Type.tests.Sequence import SequenceList
+from testPackingList import TestPackingListMixin
+from DateTime import DateTime
+from Products.ERP5Type.Errors import UnsupportedWorkflowMethod
+
+class ReturnedSalePackingListMixin(TestPackingListMixin):
+ """Mixing class with steps to test returned sale packing lists.
+ """
+
+ returned_packing_list_portal_type = 'Returned Sale Packing List'
+ returned_packing_list_line_portal_type = 'Returned Sale Packing List Line'
+ returned_packing_list_cell_portal_type = 'Returned Sale Packing List Cell'
+ inventory_line_portal_type = 'Inventory Line'
+ order_portal_type = 'Sale Order'
+ view_stock_date = '2009/12/01'
+ first_date_string = '2009/01/01'
+ shipping_date_string = '2009/10/03'
+ inventory_quantity = 2000.
+
+ default_sequence = '\
+ stepCreateOrganisation1 \
+ stepCreateOrganisation2 \
+ stepCreateOrganisation3 \
+ stepCreateCurrency \
+ stepCreateNotVariatedResource \
+ stepTic '
+
+
+ def beforeTearDown(self):
+ transaction.abort()
+ self.tic()
+ for folder in (self.portal.organisation_module,
+ self.portal.sale_order_module,
+ self.portal.inventory_module,
+ self.portal.apparel_model_module,
+ self.portal.product_module,
+ self.portal.returned_sale_packing_list_module,
+ self.portal.portal_simulation,):
+ folder.manage_delObjects([x for x in folder.objectIds()])
+ transaction.commit()
+ self.tic()
+
+
+ def loginAsManager(self, quiet=0, run=1):
+ uf = self.getPortal().acl_users
+ uf._doAddUser('manager', '', ['Manager', 'Member', 'Assignee'], [])
+ user = uf.getUserById('manager').__of__(uf)
+ newSecurityManager(None, user)
+
+ def loginAsMember(self, quiet=0, run=1):
+ uf = self.getPortal().acl_users
+ uf._doAddUser('member', '', ['Member', 'Assignor'], [])
+ user = uf.getUserById('member').__of__(uf)
+ newSecurityManager(None, user)
+
+ def afterSetUp(self, quiet=1, run=1):
+ self.loginAsManager()
+ portal = self.getPortal()
+ self.createCategories()
+ self.validateRules()
+ self.setUpPreferences()
+ # test with not a manager
+ self.loginAsMember()
+
+ def stepCreateReturnedPackingList(self, sequence=None, sequence_list=None, **kw):
+ """
+ Adds a Returned Packing List
+ """
+ returned_packing_list = self.getPortal().getDefaultModule(
+ self.returned_packing_list_portal_type).newContent(
+ portal_type=self.returned_packing_list_portal_type)
+
+
+ organisation = sequence.get('organisation1')
+ organisation3 = sequence.get('organisation3')
+
+ start_date = DateTime(self.shipping_date_string)
+ returned_packing_list.edit(
+ title = "RPL%s" % returned_packing_list.getId(),
+ start_date = start_date,
+ stop_date = start_date + 20,
+ )
+ if organisation is not None:
+ returned_packing_list.edit(source_value=organisation3,
+ source_section_value=organisation3,
+ destination_value=organisation,
+ destination_section_value=organisation,
+ source_decision_value=organisation3,
+ destination_decision_value=organisation,
+ source_administration_value=organisation3,
+ destination_administration_value=organisation,
+ )
+
+ returned_packing_list_line = returned_packing_list.newContent(
+ portal_type=self.returned_packing_list_line_portal_type)
+ resource = sequence.get('resource')
+ returned_packing_list_line.setResourceValue(resource)
+ returned_packing_list_line.edit(quantity=200)
+ sequence.edit(returned_packing_list=returned_packing_list)
+
+ def stepCheckReturnedPackingListCreating(self, sequence=None, sequence_list=None, **kw):
+ returned_packing_list = sequence.get('returned_packing_list')
+ organisation = sequence.get('organisation1')
+ organisation3 = sequence.get('organisation3')
+
+ self.assertEquals(organisation3, returned_packing_list.getSourceValue())
+ self.assertEquals(organisation3, returned_packing_list.getSourceSectionValue())
+ self.assertEquals(organisation, returned_packing_list.getDestinationValue())
+ self.assertEquals(organisation, returned_packing_list.getDestinationSectionValue())
+ self.assertEquals(organisation3, returned_packing_list.getSourceDecisionValue())
+ self.assertEquals(organisation, returned_packing_list.getDestinationDecisionValue())
+ self.assertEquals(organisation3, returned_packing_list.getSourceAdministrationValue())
+ self.assertEquals(organisation, returned_packing_list.getDestinationAdministrationValue())
+
+ returned_packing_list_line_list = returned_packing_list.objectValues(
+ portal_type=self.returned_packing_list_line_portal_type)
+
+ self.assertEquals(1, len(returned_packing_list_line_list))
+ returned_packing_list_line = returned_packing_list_line_list[0]
+ self.assertEquals(self.returned_packing_list_line_portal_type,
+ returned_packing_list_line.getPortalType())
+ resource = sequence.get('resource')
+ created_resource = returned_packing_list_line.getResourceValue()
+ self.assertEquals(resource, created_resource)
+ self.assertEquals(200, returned_packing_list_line.getQuantity())
+
+ def stepCheckReturnedPackingListDeleting(self, sequence=None,
+ sequence_list=None, **kw):
+ returned_packing_list = sequence.get('returned_packing_list')
+ returned_packing_list_line_list = returned_packing_list.objectValues(
+ portal_type=self.returned_packing_list_line_portal_type)
+ self.assertEquals(1, len(returned_packing_list_line_list))
+ returned_packing_list_line = returned_packing_list_line_list[0]
+ # delete a line
+ returned_packing_list.manage_delObjects([returned_packing_list_line.getId()])
+
+ portal_catalog = self.getCatalogTool()
+ returned_packing_list_uid = returned_packing_list.getUid()
+ found_rpl = portal_catalog(uid=returned_packing_list_uid)
+ self.assertEquals(1, len(found_rpl))
+ rpl = found_rpl[0].getObject()
+ self.assertEquals(0, len(rpl.objectValues(
+ portal_type=self.returned_packing_list_line_portal_type)))
+
+ # delete a delivery
+ self.portal.returned_sale_packing_list_module.manage_delObjects(
+ [returned_packing_list.getId(),])
+
+ found_rpl = portal_catalog(uid=returned_packing_list_uid)
+ self.assertEquals(0, len(found_rpl))
+
+ def stepConfirmReturnedPackingList(self, sequence=None, sequence_list=None, **kw):
+ returned_packing_list = sequence.get('returned_packing_list')
+ returned_packing_list.confirm()
+
+ def stepShipReturnedPackingList(self,sequence=None, sequence_list=None, **kw):
+ returned_packing_list = sequence.get('returned_packing_list')
+ returned_packing_list.start()
+
+ def stepReceiveReturnedPackingList(self,sequence=None, sequence_list=None, **kw):
+ returned_packing_list = sequence.get('returned_packing_list')
+ returned_packing_list.stop()
+
+ def stepDeliverReturnedPackingList(self,sequence=None, sequence_list=None, **kw):
+ returned_packing_list = sequence.get('returned_packing_list')
+ returned_packing_list.deliver()
+
+ def stepCheckConfirmedReturnedPackingList(self, sequence=None,
+ sequence_list=None, **kw):
+ returned_packing_list = sequence.get('returned_packing_list')
+ self.assertEquals('confirmed', returned_packing_list.getSimulationState())
+
+ def stepCheckShippedReturnedPackingList(self, sequence=None,
+ sequence_list=None, **kw):
+ returned_packing_list = sequence.get('returned_packing_list')
+ self.assertEquals('started', returned_packing_list.getSimulationState())
+
+ def stepCheckReceivedReturnedPackingList(self, sequence=None,
+ sequence_list=None, **kw):
+ returned_packing_list = sequence.get('returned_packing_list')
+ self.assertEquals('stopped', returned_packing_list.getSimulationState())
+
+
+ def stepCheckDeliveredReturnedPackingList(self, sequence=None,
+ sequence_list=None, **kw):
+ returned_packing_list = sequence.get('returned_packing_list')
+ self.assertEquals('delivered', returned_packing_list.getSimulationState())
+
+
+ def _getInventoryModule(self):
+ return getattr(self.getPortal(), 'inventory_module',None)
+
+ def stepCreateInitialInventory(self, sequence=None, **kw):
+ """
+ We will put default values for an inventory
+ """
+ portal = self.getPortal()
+ organisation = sequence.get('organisation1')
+ inventory = self._getInventoryModule().newContent()
+ inventory.edit(start_date=self.first_date_string,
+ destination_value=organisation,
+ destination_section_value=organisation)
+ inventory_list = sequence.get('inventory_list', [])
+ inventory_line = inventory.newContent(portal_type = self.inventory_line_portal_type)
+ inventory_line.edit(resource_value = sequence.get('resource'),
+ quantity = self.inventory_quantity)
+ inventory.deliver()
+ inventory_list.append(inventory)
+ sequence.edit(inventory_list=inventory_list)
+
+ def stepCheckInitialInventory(self, sequence=None, sequence_list=None, **kw):
+ node_uid = sequence.get('organisation1').getUid()
+ resource_url = sequence.get('resource').getRelativeUrl()
+ # inventory quantity:2000 (2009/01/01)
+ first_date = DateTime(self.first_date_string) + 1
+ quantity = self.getSimulationTool().getInventory(node_uid=node_uid,
+ resource=resource_url,
+ to_date=first_date)
+ self.assertEquals(2000, quantity)
+
+ view_date = DateTime(self.view_stock_date)
+ quantity = self.getSimulationTool().getInventory(node_uid=node_uid,
+ resource=resource_url,
+ to_date=view_date)
+ self.assertEquals(2000, quantity)
+
+ def stepCheckReturnedInventory(self, sequence=None, sequence_list=None, **kw):
+ # returned packing list returns
+ # From: 'organisation3'
+ # To: 'organisation1'
+ # Quantity: 200
+ node_uid = sequence.get('organisation1').getUid()
+ resource_url = sequence.get('resource').getRelativeUrl()
+ date = DateTime(self.view_stock_date)
+ quantity = self.getSimulationTool().getInventory(node_uid=node_uid,
+ resource=resource_url,
+ to_date=date)
+ self.assertEquals(2200, quantity)
+
+ shipping_date = DateTime(self.shipping_date_string)
+ quantity = self.getSimulationTool().getInventory(node_uid=node_uid,
+ resource=resource_url,
+ to_date=shipping_date)
+ self.assertEquals(2000, quantity)
+
+
+ def stepCheckReturnedPackingLineEmptyCell(self, sequence=None, \
+ sequence_list=None, **kw):
+ """
+ Check if the matrix of the current order line is empty.
+ """
+ order_line = sequence.get('returned_packing_list')
+ cell_list = order_line.objectValues(portal_type=self.order_cell_portal_type)
+ self.failIfDifferentSet( cell_list , [] )
+
+
+ def stepCreateReturnedPackingListWithCell(self, sequence=None,
+ sequence_list=None, **kw):
+ returned_packing_list = self.getPortal().getDefaultModule(
+ self.returned_packing_list_portal_type).newContent(
+ portal_type=self.returned_packing_list_portal_type)
+
+ organisation = sequence.get('organisation1')
+ organisation3 = sequence.get('organisation3')
+
+ start_date = DateTime(self.shipping_date_string)
+ returned_packing_list.edit(
+ title = "RPL%s" % returned_packing_list.getId(),
+ start_date = start_date,
+ stop_date = start_date + 20,
+ )
+ if organisation is not None:
+ returned_packing_list.edit(source_value=organisation3,
+ source_section_value=organisation3,
+ destination_value=organisation,
+ destination_section_value=organisation,
+ source_decision_value=organisation3,
+ destination_decision_value=organisation,
+ source_administration_value=organisation3,
+ destination_administration_value=organisation,
+ )
+
+ returned_packing_list_line = returned_packing_list.newContent(
+ portal_type=self.returned_packing_list_line_portal_type)
+ size_list = ['Baby','Child', 'Man', 'Woman']
+ resource = sequence.get('resource')
+ resource.edit(
+ industrial_phase_list=["phase1", "phase2"],
+ size_list=size_list,
+ variation_base_category_list=['size']
+ )
+
+ returned_packing_list_line.setResourceValue(resource)
+ variation_category_list = ['size/Baby', 'size/Child']
+
+ resource_vbcl = resource.getVariationBaseCategoryList()
+ line_vcl = []
+ for vbc in resource_vbcl:
+ resource_vcl = list(resource.getVariationCategoryList(
+ base_category_list=[vbc],
+ omit_individual_variation=0))
+ resource_vcl.sort()
+ line_vcl.extend(self.splitList(resource_vcl)[0])
+
+ returned_packing_list_line.setVariationCategoryList(line_vcl)
+ base_id = 'variation'
+ returned_packing_list_line.setCellRange(line_vcl, base_id=base_id)
+ transaction.commit()
+ self.stepTic()
+
+ self.assertEquals(2, len(variation_category_list))
+ cell_key_list = list(returned_packing_list_line.getCellKeyList(base_id=base_id))
+
+ self.assertNotEquals(0, len(cell_key_list))
+ for cell_key in cell_key_list:
+ cell = returned_packing_list_line.newCell(base_id=base_id,
+ portal_type=self.returned_packing_list_cell_portal_type,
+ *cell_key)
+ cell.edit(mapped_value_property_list=['price','quantity'],
+ price=100, quantity=200,
+ predicate_category_list=cell_key,
+ variation_category_list=cell_key)
+ transaction.commit()
+ cell_list = returned_packing_list_line.objectValues(
+ portal_type=self.returned_packing_list_cell_portal_type)
+ self.assertEquals(2, len(cell_list))
+ sequence.edit(returned_packing_list_with_cell=returned_packing_list)
+
+
+ def stepCheckReturnedPackingListWithCell(self, sequence=None,
+ sequence_list=None, **kw):
+ """
+ Check order line matrix range
+ """
+ rplwc = sequence.get('returned_packing_list_with_cell')
+ rplwc_line_list = rplwc.objectValues(
+ portal_type=self.returned_packing_list_line_portal_type)
+ self.assertEquals(1, len(rplwc_line_list))
+ rplwc_line = rplwc_line_list[0]
+
+ vcl = rplwc_line.getVariationCategoryList(omit_optional_variation=1)
+ self.assertEquals(2, len(vcl))
+ cell_list = rplwc_line.objectValues(
+ portal_type=self.returned_packing_list_cell_portal_type)
+ self.assertEquals(2, len(cell_list))
+
+
+ def stepCheckReturnedPackingListWithCellDeleting(self, sequence=None,
+ sequence_list=None, **kw):
+ """
+ check that deleting cell
+ """
+ rplwc = sequence.get('returned_packing_list_with_cell')
+ rplwc_line_list = rplwc.objectValues(
+ portal_type=self.returned_packing_list_line_portal_type)
+ self.assertEquals(1, len(rplwc_line_list))
+ rplwc_line = rplwc_line_list[0]
+
+ vcl = rplwc_line.getVariationCategoryList(omit_optional_variation=1)
+ self.assertEquals(2, len(vcl))
+ cell_list = rplwc_line.objectValues(
+ portal_type=self.returned_packing_list_cell_portal_type)
+ self.assertEquals(2, len(cell_list))
+ # delete cells
+ rplwc_line.deleteContent(map(lambda x: x.getId(), cell_list))
+ transaction.commit()
+
+ cell_list = rplwc_line.objectValues(
+ ortal_type=self.returned_packing_list_cell_portal_type)
+ self.assertEquals(0, len(cell_list))
+
+ def stepCheckReturnedPackingListIsNotDivergent(self, sequence=None,
+ sequence_list=None, **kw):
+ """
+ Test if packing list is not divergent
+ """
+ packing_list = sequence.get('returned_packing_list')
+ self.assertFalse(packing_list.isDivergent())
+
+class TestReturnedSalePackingList(ReturnedSalePackingListMixin, ERP5TypeTestCase):
+ """Tests for returned sale packing list.
+ """
+ run_all_test = 1
+ quiet = 0
+
+ def test_01_ReturnedSalePackingListWithInventory(self, quiet=quiet,
+ run=run_all_test):
+ """
+ test returned sale packing list with its inventory
+ """
+ if not run: return
+
+ sequence_list = SequenceList()
+
+ sequence_string = self.default_sequence + '\
+ stepTic \
+ stepCreateInitialInventory \
+ stepTic \
+ stepCheckInitialInventory \
+ stepCreateReturnedPackingList \
+ stepConfirmReturnedPackingList \
+ stepShipReturnedPackingList \
+ stepReceiveReturnedPackingList \
+ stepDeliverReturnedPackingList \
+ stepTic \
+ stepCheckReturnedInventory \
+ '
+ sequence_list.addSequenceString(sequence_string)
+
+ sequence_list.play(self, quiet=quiet)
+
+
+ def test_02_ReturnedSalePackingListWorkflow(self, quiet=quiet,
+ run=run_all_test):
+ """
+ test returned sale packing list workflow
+ """
+ if not run: return
+
+ sequence_list = SequenceList()
+
+ sequence_string = self.default_sequence + '\
+ stepTic \
+ stepCreateReturnedPackingList \
+ stepConfirmReturnedPackingList \
+ stepTic \
+ stepCheckConfirmedReturnedPackingList \
+ stepShipReturnedPackingList \
+ stepTic \
+ stepCheckShippedReturnedPackingList \
+ stepReceiveReturnedPackingList \
+ stepTic \
+ stepCheckReceivedReturnedPackingList \
+ stepDeliverReturnedPackingList \
+ stepTic \
+ stepCheckDeliveredReturnedPackingList \
+ '
+ sequence_list.addSequenceString(sequence_string)
+ sequence_list.play(self, quiet=quiet)
+
+
+ def test_03_ReturnedSalePackingListWorkflowFail(self, quiet=quiet,
+ run=run_all_test):
+ """
+ test that can not change workflow when delivered
+ """
+ if not run: return
+
+ sequence_list = SequenceList()
+
+ sequence_string = self.default_sequence + '\
+ stepTic \
+ stepCreateReturnedPackingList \
+ stepConfirmReturnedPackingList \
+ stepTic \
+ stepCheckConfirmedReturnedPackingList \
+ stepShipReturnedPackingList \
+ stepTic \
+ stepCheckShippedReturnedPackingList \
+ stepReceiveReturnedPackingList \
+ stepTic \
+ stepCheckReceivedReturnedPackingList \
+ stepDeliverReturnedPackingList \
+ stepTic \
+ stepCheckDeliveredReturnedPackingList \
+ stepTic \
+ stepConfirmReturnedPackingList \
+ stepTic \
+ '
+ sequence_list.addSequenceString(sequence_string)
+ try:
+ sequence_list.play(self, quiet=quiet)
+ except UnsupportedWorkflowMethod, e:
+ self.assertTrue(True)
+
+ def test_04_ReturnedSalePackingListCreating(self, quiet=quiet,
+ run=run_all_test):
+ """
+ test Returned Sale Packing List document creating
+ """
+ if not run: return
+
+ sequence_list = SequenceList()
+
+ sequence_string = self.default_sequence + '\
+ stepTic \
+ stepCreateReturnedPackingList \
+ stepTic \
+ stepCheckReturnedPackingListCreating \
+ '
+ sequence_list.addSequenceString(sequence_string)
+ sequence_list.play(self, quiet=quiet)
+
+ def test_05_ReturnedSalePackingListDeleting(self, quiet=quiet,
+ run=run_all_test):
+ """
+ test Returned Sale Packing List document deleting
+ """
+ if not run: return
+
+ sequence_list = SequenceList()
+ sequence_string = self.default_sequence + '\
+ stepTic \
+ stepCreateReturnedPackingList \
+ stepTic \
+ stepCheckReturnedPackingListDeleting \
+ '
+ sequence_list.addSequenceString(sequence_string)
+ sequence_list.play(self, quiet=quiet)
+
+ def test_06_ReturnedSalePackingListWithCell(self, quiet=quit,
+ run=run_all_test):
+ sequence_list = SequenceList()
+ sequence_string = self.default_sequence + '\
+ stepTic \
+ stepCreateReturnedPackingListWithCell \
+ stepCheckReturnedPackingListWithCell \
+ '
+ sequence_list.addSequenceString(sequence_string)
+ sequence_list.play(self, quiet=quiet)
+
+ def test_07_ReturnedSalePackingListWithCellDeleting(self, quiet=quit,
+ run=run_all_test):
+ sequence_list = SequenceList()
+ sequence_string = self.default_sequence + '\
+ stepTic \
+ stepCreateReturnedPackingListWithCell \
+ stepCheckReturnedPackingListWithCellDeleting \
+ '
+ sequence_list.addSequenceString(sequence_string)
+ sequence_list.play(self, quiet=quiet)
+
+def test_suite():
+ suite = unittest.TestSuite()
+ suite.addTest(unittest.makeSuite(TestReturnedSalePackingList))
+ return suite
More information about the Erp5-report
mailing list