Commit 8cb47695 authored by Łukasz Nowak's avatar Łukasz Nowak

Follow 0e66ec04

parent 63470f87
...@@ -9,16 +9,30 @@ from Products.SlapOS.tests.testSlapOSMixin import \ ...@@ -9,16 +9,30 @@ from Products.SlapOS.tests.testSlapOSMixin import \
testSlapOSMixin, withAbort testSlapOSMixin, withAbort
from DateTime import DateTime from DateTime import DateTime
from Products.ERP5Type.DateUtils import addToDate from Products.ERP5Type.DateUtils import addToDate
from Products.ERP5.Document.SimulationMovement import SimulationMovement
import transaction
def getSimulationStatePlanned(self, *args, **kwargs):
return 'planned'
def getSimulationStateDelivered(self, *args, **kwargs):
if self.getId() == 'root_simulation_movement' or \
self.getParentValue().getParentValue().getId() == \
'root_simulation_movement':
return 'delivered'
return 'planned'
def getSimulationStatePlannedDelivered(self, *args, **kwargs):
if self.getId() == 'root_simulation_movement':
return 'delivered'
return 'planned'
class TestDefaultInvoiceTransactionRule(testSlapOSMixin): class TestDefaultInvoiceTransactionRule(testSlapOSMixin):
@withAbort @withAbort
def test_simulation(self): def test_simulation(self):
from Products.ERP5.Document.SimulationMovement import SimulationMovement
SimulationMovement.original_getSimulationState = SimulationMovement\ SimulationMovement.original_getSimulationState = SimulationMovement\
.getSimulationState .getSimulationState
try: try:
def getSimulationStatePlanned(self, *args, **kwargs):
return 'planned'
SimulationMovement.getSimulationState = getSimulationStatePlanned SimulationMovement.getSimulationState = getSimulationStatePlanned
source = self.portal.person_module.template_member\ source = self.portal.person_module.template_member\
...@@ -72,7 +86,18 @@ class TestDefaultInvoiceTransactionRule(testSlapOSMixin): ...@@ -72,7 +86,18 @@ class TestDefaultInvoiceTransactionRule(testSlapOSMixin):
portal_type='Applied Rule') if q.getSpecialiseReference() == \ portal_type='Applied Rule') if q.getSpecialiseReference() == \
'default_invoice_transaction_rule'] 'default_invoice_transaction_rule']
# movement in not final state, it shall not be expanded
self.assertEqual(0, len(applied_rule_list))
# movement is in final state, it shall be expanded # movement is in final state, it shall be expanded
SimulationMovement.getSimulationState = getSimulationStatePlannedDelivered
self.assertEqual('delivered',
root_simulation_movement.getSimulationState())
root_simulation_movement.expand(expand_policy='immediate')
applied_rule_list = [q for q in root_simulation_movement.contentValues(
portal_type='Applied Rule') if q.getSpecialiseReference() == \
'default_invoice_transaction_rule']
self.assertEqual(1, len(applied_rule_list)) self.assertEqual(1, len(applied_rule_list))
applied_rule = applied_rule_list[0] applied_rule = applied_rule_list[0]
...@@ -90,8 +115,8 @@ class TestDefaultInvoiceTransactionRule(testSlapOSMixin): ...@@ -90,8 +115,8 @@ class TestDefaultInvoiceTransactionRule(testSlapOSMixin):
debit_movement = debit_movement_list[0] debit_movement = debit_movement_list[0]
credit_movement = credit_movement_list[0] credit_movement = credit_movement_list[0]
def checkSimulationMovement(simulation_movement, source, destination, def checkSimulationMovement(simulation_movement, source, destination,
quantity_sign, child_rule_reference_list): quantity_sign, simulation_state, child_rule_reference_list):
self.assertEqual('planned', simulation_movement.getSimulationState()) self.assertEqual(simulation_state, simulation_movement.getSimulationState())
self.assertEqual(source, simulation_movement.getSource()) self.assertEqual(source, simulation_movement.getSource())
self.assertEqual(root_simulation_movement.getSourceSection(), self.assertEqual(root_simulation_movement.getSourceSection(),
simulation_movement.getSourceSection()) simulation_movement.getSourceSection())
...@@ -122,9 +147,16 @@ class TestDefaultInvoiceTransactionRule(testSlapOSMixin): ...@@ -122,9 +147,16 @@ class TestDefaultInvoiceTransactionRule(testSlapOSMixin):
.contentValues(portal_type='Applied Rule')]) .contentValues(portal_type='Applied Rule')])
checkSimulationMovement(debit_movement, 'account_module/receivable', checkSimulationMovement(debit_movement, 'account_module/receivable',
'account_module/payable', -1, ['default_payment_rule']) 'account_module/payable', -1, 'planned', [])
checkSimulationMovement(credit_movement, 'account_module/sales', checkSimulationMovement(credit_movement, 'account_module/sales',
'account_module/purchase', 1, []) 'account_module/purchase', 1, 'planned', [])
SimulationMovement.getSimulationState = getSimulationStateDelivered
root_simulation_movement.expand(expand_policy='immediate')
checkSimulationMovement(debit_movement, 'account_module/receivable',
'account_module/payable', -1, 'delivered', ['default_payment_rule'])
checkSimulationMovement(credit_movement, 'account_module/sales',
'account_module/purchase', 1, 'delivered', [])
finally: finally:
SimulationMovement.getSimulationState = SimulationMovement\ SimulationMovement.getSimulationState = SimulationMovement\
.original_getSimulationState .original_getSimulationState
...@@ -132,12 +164,9 @@ class TestDefaultInvoiceTransactionRule(testSlapOSMixin): ...@@ -132,12 +164,9 @@ class TestDefaultInvoiceTransactionRule(testSlapOSMixin):
class TestDefaultInvoicingRule(testSlapOSMixin): class TestDefaultInvoicingRule(testSlapOSMixin):
@withAbort @withAbort
def test_simulation(self): def test_simulation(self):
from Products.ERP5.Document.SimulationMovement import SimulationMovement
SimulationMovement.original_getSimulationState = SimulationMovement\ SimulationMovement.original_getSimulationState = SimulationMovement\
.getSimulationState .getSimulationState
try: try:
def getSimulationStatePlanned(self, *args, **kwargs):
return 'planned'
SimulationMovement.getSimulationState = getSimulationStatePlanned SimulationMovement.getSimulationState = getSimulationStatePlanned
source = self.portal.person_module.template_member\ source = self.portal.person_module.template_member\
...@@ -186,7 +215,15 @@ class TestDefaultInvoicingRule(testSlapOSMixin): ...@@ -186,7 +215,15 @@ class TestDefaultInvoicingRule(testSlapOSMixin):
applied_rule_list = root_simulation_movement.contentValues( applied_rule_list = root_simulation_movement.contentValues(
portal_type='Applied Rule') portal_type='Applied Rule')
# movement in not final state, it shall not be expanded
self.assertEqual(0, len(applied_rule_list))
# movement is in final state, it shall be expanded # movement is in final state, it shall be expanded
SimulationMovement.getSimulationState = getSimulationStatePlannedDelivered
self.assertEqual('delivered',
root_simulation_movement.getSimulationState())
root_simulation_movement.expand(expand_policy='immediate')
applied_rule_list = root_simulation_movement.contentValues(
portal_type='Applied Rule')
self.assertEqual(1, len(applied_rule_list)) self.assertEqual(1, len(applied_rule_list))
applied_rule = applied_rule_list[0] applied_rule = applied_rule_list[0]
...@@ -233,6 +270,12 @@ class TestDefaultInvoicingRule(testSlapOSMixin): ...@@ -233,6 +270,12 @@ class TestDefaultInvoicingRule(testSlapOSMixin):
'rocess/invoice_path', 'business_process_module/slapos_sale_b' 'rocess/invoice_path', 'business_process_module/slapos_sale_b'
'usiness_process/invoice'], simulation_movement.getCausalityList()) 'usiness_process/invoice'], simulation_movement.getCausalityList())
# check children rules' type # check children rules' type
child_applied_rule_type_list = [q.getSpecialiseReference() for q in \
simulation_movement.contentValues(portal_type='Applied Rule')]
self.assertEqual(0, len(child_applied_rule_type_list))
SimulationMovement.getSimulationState = getSimulationStateDelivered
root_simulation_movement.expand(expand_policy='immediate')
child_applied_rule_type_list = [q.getSpecialiseReference() for q in \ child_applied_rule_type_list = [q.getSpecialiseReference() for q in \
simulation_movement.contentValues(portal_type='Applied Rule')] simulation_movement.contentValues(portal_type='Applied Rule')]
self.assertSameSet( self.assertSameSet(
...@@ -245,12 +288,9 @@ class TestDefaultInvoicingRule(testSlapOSMixin): ...@@ -245,12 +288,9 @@ class TestDefaultInvoicingRule(testSlapOSMixin):
class TestDefaultPaymentRule(testSlapOSMixin): class TestDefaultPaymentRule(testSlapOSMixin):
@withAbort @withAbort
def test_simulation(self): def test_simulation(self):
from Products.ERP5.Document.SimulationMovement import SimulationMovement
SimulationMovement.original_getSimulationState = SimulationMovement\ SimulationMovement.original_getSimulationState = SimulationMovement\
.getSimulationState .getSimulationState
try: try:
def getSimulationStatePlanned(self, *args, **kwargs):
return 'planned'
SimulationMovement.getSimulationState = getSimulationStatePlanned SimulationMovement.getSimulationState = getSimulationStatePlanned
source = self.portal.person_module.template_member\ source = self.portal.person_module.template_member\
...@@ -283,7 +323,7 @@ class TestDefaultPaymentRule(testSlapOSMixin): ...@@ -283,7 +323,7 @@ class TestDefaultPaymentRule(testSlapOSMixin):
quantity_unit='unit/piece', quantity_unit='unit/piece',
specialise='sale_trade_condition_module/slapos_trade_condition', specialise='sale_trade_condition_module/slapos_trade_condition',
causality_list=['business_process_module/slapos_sale_busines' causality_list=['business_process_module/slapos_sale_busines'
's_process/pay'], 's_process/account'],
delivery_value=self.portal.accounting_module.newContent( delivery_value=self.portal.accounting_module.newContent(
portal_type='Sale Invoice Transaction').newContent( portal_type='Sale Invoice Transaction').newContent(
portal_type='Invoice Line') portal_type='Invoice Line')
...@@ -296,7 +336,16 @@ class TestDefaultPaymentRule(testSlapOSMixin): ...@@ -296,7 +336,16 @@ class TestDefaultPaymentRule(testSlapOSMixin):
applied_rule_list = root_simulation_movement.contentValues( applied_rule_list = root_simulation_movement.contentValues(
portal_type='Applied Rule') portal_type='Applied Rule')
# movement in not final state, it shall not be expanded
self.assertEqual(0, len(applied_rule_list))
# movement is in final state, it shall be expanded # movement is in final state, it shall be expanded
SimulationMovement.getSimulationState = getSimulationStatePlannedDelivered
self.assertEqual('delivered',
root_simulation_movement.getSimulationState())
root_simulation_movement.expand(expand_policy='immediate')
applied_rule_list = root_simulation_movement.contentValues(
portal_type='Applied Rule')
self.assertEqual(1, len(applied_rule_list)) self.assertEqual(1, len(applied_rule_list))
applied_rule = applied_rule_list[0] applied_rule = applied_rule_list[0]
...@@ -459,9 +508,25 @@ class TestHostingSubscriptionSimulation(testSlapOSMixin): ...@@ -459,9 +508,25 @@ class TestHostingSubscriptionSimulation(testSlapOSMixin):
self.assertEqual('planned', simulation_movement.getSimulationState()) self.assertEqual('planned', simulation_movement.getSimulationState())
self.assertEqual(None, simulation_movement.getDelivery()) self.assertEqual(None, simulation_movement.getDelivery())
applied_rule_list_level_2 = simulation_movement.contentValues( applied_rule_list_level_2 = [q.getSpecialiseReference() for q in
portal_type='Applied Rule') simulation_movement.contentValues(portal_type='Applied Rule')]
self.assertEqual(1, len(applied_rule_list_level_2)) self.assertEqual(0, len(applied_rule_list_level_2))
SimulationMovement.original_getSimulationState = SimulationMovement\
.getSimulationState
try:
def getSimulationState(self):
return 'delivered'
SimulationMovement.getSimulationState = getSimulationState
simulation_movement.expand(expand_policy='immediate')
applied_rule_list_level_2 = [q.getSpecialiseReference() for q in
simulation_movement.contentValues(portal_type='Applied Rule')]
self.assertSameSet(['default_invoicing_rule'],
applied_rule_list_level_2)
finally:
SimulationMovement.getSimulationState = SimulationMovement\
.original_getSimulationState
transaction.abort()
# check next simulation movement # check next simulation movement
idx += 1 idx += 1
...@@ -563,15 +628,13 @@ class TestHostingSubscriptionSimulation(testSlapOSMixin): ...@@ -563,15 +628,13 @@ class TestHostingSubscriptionSimulation(testSlapOSMixin):
# check children rules' type # check children rules' type
child_applied_rule_type_list = [q.getSpecialiseReference() for q in \ child_applied_rule_type_list = [q.getSpecialiseReference() for q in \
simulation_movement.contentValues(portal_type='Applied Rule')] simulation_movement.contentValues(portal_type='Applied Rule')]
self.assertSameSet( ['default_invoicing_rule'], self.assertSameSet( [], child_applied_rule_type_list)
child_applied_rule_type_list)
# check next simulation movement # check next simulation movement
idx += 1 idx += 1
def isFrozen(*args, **kwargs): def isFrozen(*args, **kwargs):
return True return True
try: try:
from Products.ERP5.Document.SimulationMovement import SimulationMovement
SimulationMovement.originalIsFrozen = SimulationMovement.isFrozen SimulationMovement.originalIsFrozen = SimulationMovement.isFrozen
SimulationMovement.isFrozen = isFrozen SimulationMovement.isFrozen = isFrozen
...@@ -592,12 +655,9 @@ class TestHostingSubscriptionSimulation(testSlapOSMixin): ...@@ -592,12 +655,9 @@ class TestHostingSubscriptionSimulation(testSlapOSMixin):
class TestDefaultTradeModelRule(testSlapOSMixin): class TestDefaultTradeModelRule(testSlapOSMixin):
@withAbort @withAbort
def test_simulation(self): def test_simulation(self):
from Products.ERP5.Document.SimulationMovement import SimulationMovement
SimulationMovement.original_getSimulationState = SimulationMovement\ SimulationMovement.original_getSimulationState = SimulationMovement\
.getSimulationState .getSimulationState
try: try:
def getSimulationStatePlanned(self, *args, **kwargs):
return 'planned'
SimulationMovement.getSimulationState = getSimulationStatePlanned SimulationMovement.getSimulationState = getSimulationStatePlanned
source = self.portal.person_module.template_member\ source = self.portal.person_module.template_member\
...@@ -651,7 +711,16 @@ class TestDefaultTradeModelRule(testSlapOSMixin): ...@@ -651,7 +711,16 @@ class TestDefaultTradeModelRule(testSlapOSMixin):
portal_type='Applied Rule') if q.getSpecialiseReference() == \ portal_type='Applied Rule') if q.getSpecialiseReference() == \
'default_trade_model_rule'] 'default_trade_model_rule']
# movement in not final state, it shall not be expanded
self.assertEqual(0, len(applied_rule_list))
# movement is in final state, it shall be expanded # movement is in final state, it shall be expanded
SimulationMovement.getSimulationState = getSimulationStatePlannedDelivered
self.assertEqual('delivered',
root_simulation_movement.getSimulationState())
root_simulation_movement.expand(expand_policy='immediate')
applied_rule_list = [q for q in root_simulation_movement.contentValues(
portal_type='Applied Rule') if
q.getSpecialiseReference() == 'default_trade_model_rule']
self.assertEqual(1, len(applied_rule_list)) self.assertEqual(1, len(applied_rule_list))
applied_rule = applied_rule_list[0] applied_rule = applied_rule_list[0]
...@@ -744,7 +813,7 @@ class TestDefaultDeliveryRule(testSlapOSMixin): ...@@ -744,7 +813,7 @@ class TestDefaultDeliveryRule(testSlapOSMixin):
portal_type='Simulation Movement') portal_type='Simulation Movement')
self.assertEqual(1, len(simulation_movement_list)) self.assertEqual(1, len(simulation_movement_list))
simulation_movement = simulation_movement_list[0 ] simulation_movement = simulation_movement_list[0]
self.assertSameSet(line.getBaseContributionList(), self.assertSameSet(line.getBaseContributionList(),
simulation_movement.getBaseContributionList()) simulation_movement.getBaseContributionList())
...@@ -776,5 +845,10 @@ class TestDefaultDeliveryRule(testSlapOSMixin): ...@@ -776,5 +845,10 @@ class TestDefaultDeliveryRule(testSlapOSMixin):
simulation_movement.getStartDate()) simulation_movement.getStartDate())
self.assertEqual(delivery.getStopDate(), self.assertEqual(delivery.getStopDate(),
simulation_movement.getStopDate()) simulation_movement.getStopDate())
self.assertSameSet([], [q.getSpecialiseReference()
for q in simulation_movement.contentValues(portal_type='Applied Rule')])
delivery.stop()
delivery.deliver()
applied_rule.expand(expand_policy='immediate')
self.assertSameSet(['default_invoicing_rule'], [q.getSpecialiseReference() self.assertSameSet(['default_invoicing_rule'], [q.getSpecialiseReference()
for q in simulation_movement.contentValues(portal_type='Applied Rule')]) for q in simulation_movement.contentValues(portal_type='Applied Rule')])
99 100
\ No newline at end of file \ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment