From 8352cf33ed037f09429240b47295bee59d7beb1f Mon Sep 17 00:00:00 2001 From: Yusei Tahara <yusei@nexedi.com> Date: Mon, 30 May 2011 11:18:45 +0900 Subject: [PATCH] Add a test for product which is variated and have multiple quantity units. --- product/ERP5/tests/testInventory.py | 48 +++++++++++++++++++++++++++++ product/ERP5/tests/testOrder.py | 46 +++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) diff --git a/product/ERP5/tests/testInventory.py b/product/ERP5/tests/testInventory.py index 0184888500..daf8fd0427 100644 --- a/product/ERP5/tests/testInventory.py +++ b/product/ERP5/tests/testInventory.py @@ -328,6 +328,15 @@ class TestInventory(TestOrderMixin, ERP5TypeTestCase): ) sequence.edit(delivery_line_list=delivery_line_list) + def stepCreateVariatedNonDefaultQuantityUnitPackingListLine( + self, sequence=None, sequence_list=None, **kw): + """ + Create a line not variated + """ + self.stepCreateVariatedPackingListLine(sequence, sequence_list, **kw) + delivery_line = sequence.get('delivery_line_list')[-1] + delivery_line.setQuantityUnitValue(self.portal.portal_categories.quantity_unit.unit.drum) + def stepDeliverPackingList(self, sequence=None, sequence_list=None, **kw): # Switch to "started" state @@ -1778,6 +1787,20 @@ class TestInventory(TestOrderMixin, ERP5TypeTestCase): self.checkVariatedInventory(variation_category_list=variation_category_list, quantity=quantity,sequence=sequence) + def stepTestInitialVariatedNonDefaultQuantityUnitInventory(self, sequence=None, sequence_list=None, **kw): + """ + Test Inventory Module behavior + """ + resource = sequence.get('resource') + variation_category_list = sequence.get('variation_1') + quantity = 100 + self.checkVariatedInventory(variation_category_list=variation_category_list, + quantity=quantity,sequence=sequence) + variation_category_list = sequence.get('variation_2') + quantity = 300 + self.checkVariatedInventory(variation_category_list=variation_category_list, + quantity=quantity,sequence=sequence) + def stepTestVariatedInventoryAfterInventory(self, sequence=None, sequence_list=None, **kw): """ Test Inventory Module behavior @@ -1928,6 +1951,31 @@ class TestInventory(TestOrderMixin, ERP5TypeTestCase): sequence_list.play(self) + def test_04_InventoryModuleWithVariationAndMultiQuantityUnit(self, quiet=0, run=run_all_test): + """ + Test InventoryModule behavior with product which has + variation and multiple quantity units. + """ + if not run: return + sequence_list = SequenceList() + + sequence_string = 'stepCreateOrganisationsForModule \ + stepCreateVariatedMultipleQuantityUnitResource \ + stepTic \ + stepCreatePackingListForModule \ + stepTic \ + stepCreateVariatedNonDefaultQuantityUnitPackingListLine \ + stepTic \ + stepDeliverPackingList \ + stepTic \ + stepTestInitialVariatedNonDefaultQuantityUnitInventory \ + stepCreateSingleVariatedInventory \ + stepTic \ + stepTestVariatedInventoryAfterInventory \ + ' + sequence_list.addSequenceString(sequence_string) + sequence_list.play(self) + def test_suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(TestInventory)) diff --git a/product/ERP5/tests/testOrder.py b/product/ERP5/tests/testOrder.py index 9c1b56f029..ad5d8ed7c4 100644 --- a/product/ERP5/tests/testOrder.py +++ b/product/ERP5/tests/testOrder.py @@ -218,6 +218,52 @@ class TestOrderMixin(SubcontentReindexingWrapper): resource_list.append(resource) sequence.edit( resource_list = resource_list ) + def stepCreateVariatedMultipleQuantityUnitResource(self, sequence=None, sequence_list=None, **kw): + """ + Create a resource with variation and multiple quantity units + """ + # Extend quantity_unit category if needed + quantity_unit = self.portal.portal_categories.quantity_unit + if not 'unit' in quantity_unit.objectIds(): + quantity_unit.newContent(id='unit') + if not 'drum' in quantity_unit.unit.objectIds(): + quantity_unit.unit.newContent(id='drum', quantity=1) + if not 'mass' in quantity_unit.objectIds(): + quantity_unit.newContent(id='mass') + if not 'kilogram' in quantity_unit.mass.objectIds(): + quantity_unit.mass.newContent(id='kilogram', quantity=1) + # Extend metric_type category if needed + metric_type = self.portal.portal_categories.metric_type + if not 'unit' in metric_type.objectIds(): + metric_type.newContent(id='unit') + if not 'mass' in metric_type.objectIds(): + metric_type.newContent(id='mass') + + # Create resource + self.stepCreateVariatedResource(sequence, sequence_list, **kw) + resource = sequence.get('resource') + + # Extend resource portal type + resource_portal_type = getattr(self.portal.portal_types, resource.portal_type) + type_allowed_content_type_list = resource_portal_type.getTypeAllowedContentTypeList() + if not 'Measure' in type_allowed_content_type_list: + type_allowed_content_type_list.append('Measure') + resource_portal_type.setTypeAllowedContentTypeList(type_allowed_content_type_list) + + # Set quantity units to product + resource.setQuantityUnitValueList([quantity_unit.mass.kilogram, + quantity_unit.unit.drum]) + # Set measures to products + resource.newContent(portal_type='Measure', + metric_type_value=metric_type.mass, + default_metric_type=True, + quantity_unit_value=quantity_unit.mass.kilogram, + quantity=1) + resource.newContent(portal_type='Measure', + metric_type_value=metric_type.unit, + quantity_unit_value=quantity_unit.unit.drum, + quantity=0.01) + def stepCreateOrganisation(self, sequence=None, sequence_list=None, title=None, **kw): """ -- 2.30.9