From 7b92c2f8c892440df365f04f55636d35e8c7a74b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Nowak?= <luke@nexedi.com> Date: Wed, 22 Jul 2009 15:05:01 +0000 Subject: [PATCH] - avoid code duplication by merging common parts and passing parameters - do more checks about simulations git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@28144 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5/tests/testBPMEvaluation.py | 87 ++++++++----------------- 1 file changed, 26 insertions(+), 61 deletions(-) diff --git a/product/ERP5/tests/testBPMEvaluation.py b/product/ERP5/tests/testBPMEvaluation.py index 2e1df30dfb..0b82e4fcfa 100644 --- a/product/ERP5/tests/testBPMEvaluation.py +++ b/product/ERP5/tests/testBPMEvaluation.py @@ -37,8 +37,7 @@ It uses only Sale path to demonstrate BPM. It is advised to *NOT* remove erp5_administration. TODOs: - * avoid duplication of code: - * _checkOrderBPMSimulation and _checkPackingListBPMSimulation + * avoid duplication of code when possible * implement tests wisely, to support at least both BPM cases """ import unittest @@ -102,45 +101,44 @@ class TestBPMEvaluationMixin(TestBPMMixin): stop_date = self.order_stop_date, specialise_value = self.trade_condition) - def _checkOrderBPMSimulation(self): - """Checks BPM related simumation. - - Note: Simulation tree is the same, it is totally independent from - BPM sequence""" + def _checkBPMSimulation(self, delivery, root_applied_rule_portal_type): # TODO: # - gather errors into one list - bpm_order_rule = self.order.getCausalityRelatedValue( + bpm_root_rule = delivery.getCausalityRelatedValue( portal_type='Applied Rule') - self.assertEqual(bpm_order_rule.getSpecialiseValue().getPortalType(), - 'BPM Order Rule') - order_simulation_movement_list = bpm_order_rule.contentValues() - self.assertEqual(len(self.order.getMovementList()), - len(order_simulation_movement_list)) - for order_simulation_movement in order_simulation_movement_list: - self.assertEqual(order_simulation_movement.getPortalType(), + self.assertEqual(bpm_root_rule.getSpecialiseValue().getPortalType(), + root_applied_rule_portal_type) + root_simulation_movement_list = bpm_root_rule.contentValues() + self.assertEqual(len(delivery.getMovementList()), + len(root_simulation_movement_list)) + for root_simulation_movement in root_simulation_movement_list: + self.assertEqual(root_simulation_movement.getPortalType(), 'Simulation Movement') - order_line = order_simulation_movement.getOrderValue() + movement = root_simulation_movement.getOrderValue() property_problem_list = [] for property in 'resource', 'price', 'quantity', 'start_date', \ 'stop_date', 'source', 'destination', 'source_section', \ 'destination_section': - if order_line.getProperty(property) != order_simulation_movement \ + if movement.getProperty(property) != root_simulation_movement \ .getProperty(property): property_problem_list.append('property %s movement %s ' - 'simulation %s' % (property, order_line.getProperty(property), - order_simulation_movement.getProperty(property))) + 'simulation %s' % (property, movement.getProperty(property), + root_simulation_movement.getProperty(property))) if len(property_problem_list) > 0: self.fail('\n'.join(property_problem_list)) - for bpm_invoicing_rule in order_simulation_movement.contentValues(): + self.assertEquals(len(root_simulation_movement.contentValues()), 1) + for bpm_invoicing_rule in root_simulation_movement.contentValues(): self.assertEqual(bpm_invoicing_rule.getPortalType(), 'Applied Rule') self.assertEqual(bpm_invoicing_rule.getSpecialiseValue() \ .getPortalType(), 'BPM Invoicing Rule') + self.assertEquals(len(bpm_invoicing_rule.contentValues()), 1) for invoicing_simulation_movement in bpm_invoicing_rule \ .contentValues(): self.assertEqual(invoicing_simulation_movement.getPortalType(), 'Simulation Movement') self.assertEqual(invoicing_simulation_movement.getCausalityValue(), self.invoice_path) + self.assertEquals(len(invoicing_simulation_movement.contentValues()), 1) for trade_model_rule in invoicing_simulation_movement \ .contentValues(): self.assertEqual(trade_model_rule.getPortalType(), 'Applied Rule') @@ -149,6 +147,13 @@ class TestBPMEvaluationMixin(TestBPMMixin): self.assertSameSet(trade_model_rule.contentValues( portal_type='Simulation Movement'), []) + def _checkOrderBPMSimulation(self): + """Checks BPM related simumation. + + Note: Simulation tree is the same, it is totally independent from + BPM sequence""" + self._checkBPMSimulation(self.order, 'BPM Order Rule') + class TestBPMEvaluationDefaultProcessMixin: def _createBusinessProcess(self): self.business_process = self.createBusinessProcess() @@ -305,47 +310,7 @@ class TestPackingList(TestBPMEvaluationMixin): Note: Simulation tree is the same, it is totally independent from BPM sequence""" - # TODO: - # - gather errors into one list - bpm_packing_list_rule = self.packing_list.getCausalityRelatedValue( - portal_type='Applied Rule') - self.assertEqual(bpm_packing_list_rule.getSpecialiseValue().getPortalType(), - 'BPM Delivery Rule') - packing_list_simulation_movement_list = bpm_packing_list_rule.contentValues() - self.assertEqual(len(self.packing_list.getMovementList()), - len(packing_list_simulation_movement_list)) - for packing_list_simulation_movement in packing_list_simulation_movement_list: - self.assertEqual(packing_list_simulation_movement.getPortalType(), - 'Simulation Movement') - packing_list_line = packing_list_simulation_movement.getOrderValue() - property_problem_list = [] - for property in 'resource', 'price', 'quantity', 'start_date', \ - 'stop_date', 'source', 'destination', 'source_section', \ - 'destination_section': - if packing_list_line.getProperty(property) != packing_list_simulation_movement \ - .getProperty(property): - property_problem_list.append('property %s movement %s ' - 'simulation %s' % (property, packing_list_line.getProperty(property), - packing_list_simulation_movement.getProperty(property))) - if len(property_problem_list) > 0: - self.fail('\n'.join(property_problem_list)) - for bpm_invoicing_rule in packing_list_simulation_movement.contentValues(): - self.assertEqual(bpm_invoicing_rule.getPortalType(), 'Applied Rule') - self.assertEqual(bpm_invoicing_rule.getSpecialiseValue() \ - .getPortalType(), 'BPM Invoicing Rule') - for invoicing_simulation_movement in bpm_invoicing_rule \ - .contentValues(): - self.assertEqual(invoicing_simulation_movement.getPortalType(), - 'Simulation Movement') - self.assertEqual(invoicing_simulation_movement.getCausalityValue(), - self.invoice_path) - for trade_model_rule in invoicing_simulation_movement \ - .contentValues(): - self.assertEqual(trade_model_rule.getPortalType(), 'Applied Rule') - self.assertEqual(trade_model_rule.getSpecialiseValue() \ - .getPortalType(), 'Trade Model Rule') - self.assertSameSet(trade_model_rule.contentValues( - portal_type='Simulation Movement'), []) + self._checkBPMSimulation(self.packing_list, 'BPM Delivery Rule') def test_confirming_packing_list_only(self): self._createPackingList() -- 2.30.9