From d4f37f4a783ee30d5f639433b2da6adfffbc0d91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Nowak?= <luke@nexedi.com> Date: Tue, 21 Jul 2009 09:42:49 +0000 Subject: [PATCH] - do not use decorators for methods which are used in subclasses - use erp5_dummy_movement to achieve really low level testing, remove very dirty hacks for workflows git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@28119 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5/tests/testBPMCore.py | 65 ++++++++++++++----------------- 1 file changed, 30 insertions(+), 35 deletions(-) diff --git a/product/ERP5/tests/testBPMCore.py b/product/ERP5/tests/testBPMCore.py index 33d1d279bd..f1dc10baf2 100644 --- a/product/ERP5/tests/testBPMCore.py +++ b/product/ERP5/tests/testBPMCore.py @@ -222,16 +222,16 @@ class TestBPMMixin(ERP5TypeTestCase): itr.validate() - @reindex def afterSetUp(self): self.createCategories() self.setSystemPreference() self.createInvoiceTransationRule() + self.stepTic() - @reindex def beforeTearDown(self): self.portal.portal_rules.manage_delObjects( ids=['test_invoice_transaction_rule']) + self.stepTic() class TestBPMImplementation(TestBPMMixin): """Business Process implementation tests""" @@ -600,31 +600,31 @@ class TestBPMisBuildableImplementation(TestBPMMixin): delivery_portal_type = 'Sale Packing List' delivery_line_portal_type = 'Sale Packing List Line' + def _createDelivery(self, **kw): + return self.folder.newContent(portal_type='Dummy Delivery', **kw) + + def _createMovement(self, delivery, **kw): + return delivery.newContent(portal_type='Dummy Movement', **kw) + + def getBusinessTemplateList(self): + return TestBPMMixin.getBusinessTemplateList(self) + ('erp5_dummy_movement', ) + + def afterSetUp(self): + TestBPMMixin.afterSetUp(self) + if not hasattr(self.portal, 'testing_folder'): + self.portal.newContent(portal_type='Folder', + id='testing_folder') + self.folder = self.portal.testing_folder + self.stepTic() + + def beforeTearDown(self): + TestBPMMixin.beforeTearDown(self) + self.portal.deleteContent(id='testing_folder') + self.stepTic() + def test_isBuildable(self): """Test isBuildable implementation for Business Paths and Simulation Movements""" - # disable interactions in workflow methods to do not have side effects and - # to increase readability of assertions and code - # FIXME: - # * do it non destructive way - # * trim list - # * or do it other way - for workflow_id in ( - 'delivery_causality_interaction_workflow', - 'delivery_causality_workflow', - 'delivery_movement_causality_interaction_workflow', - 'delivery_movement_simulation_interaction_workflow', - 'delivery_simulation_interaction_workflow', - 'order_movement_simulation_interaction_workflow', - 'order_simulation_interaction_workflow', - 'order_workflow', - 'packing_list_workflow', - ): - workflow = getattr(self.portal.portal_workflow, workflow_id) - for script in workflow.scripts.objectValues(): - script.write('return') - transaction.commit() - # simple business process preparation business_process = self.createBusinessProcess() first_state = self.createBusinessState(business_process) @@ -642,10 +642,8 @@ class TestBPMisBuildableImplementation(TestBPMMixin): trade_phase='default/invoicing') # create order and order line to have starting point for business process - order = self.portal.getDefaultModule( - portal_type=self.order_portal_type).newContent( - portal_type=self.order_portal_type) - order_line = order.newContent(portal_type=self.order_line_portal_type) + order = self._createDelivery() + order_line = self._createMovement(order) # first level rule with simulation movement applied_rule = self.portal.portal_simulation.newContent( @@ -687,11 +685,8 @@ class TestBPMisBuildableImplementation(TestBPMMixin): False) # add delivery - delivery = self.portal.getDefaultModule( - portal_type=self.delivery_portal_type).newContent( - portal_type=self.delivery_portal_type, causality_value = order) - delivery_line = delivery.newContent( - portal_type=self.delivery_line_portal_type) + delivery = self._createDelivery(causality_value = order) + delivery_line = self._createMovement(delivery) # relate not split movement with delivery (deliver it) simulation_movement.edit(delivery_value = delivery_line) @@ -718,8 +713,8 @@ class TestBPMisBuildableImplementation(TestBPMMixin): # put delivery in simulation state configured on path (and this state is # available directly on movements) - delivery.plan() - delivery.confirm() + + delivery.setSimulationState('confirmed') self.assertEqual('confirmed', delivery.getSimulationState()) -- 2.30.9