Commit 69f70502 authored by Yusuke Muraoka's avatar Yusuke Muraoka

Invoice workflow supports auto_plan transition.



git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@32211 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent d384fd6c
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
import transaction import transaction
from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
from Products.ERP5Type.tests.SecurityTestCase import SecurityTestCase
from AccessControl.SecurityManagement import newSecurityManager from AccessControl.SecurityManagement import newSecurityManager
from DateTime import DateTime from DateTime import DateTime
from Products.ERP5Type.tests.Sequence import SequenceList from Products.ERP5Type.tests.Sequence import SequenceList
...@@ -384,6 +385,10 @@ class TestAdvancedInvoice(TestSaleInvoiceMixin, ERP5TypeTestCase): ...@@ -384,6 +385,10 @@ class TestAdvancedInvoice(TestSaleInvoiceMixin, ERP5TypeTestCase):
if err_list: if err_list:
self.fail(''.join(err_list)) self.fail(''.join(err_list))
def test_Workflow(self):
"""XXX: Make a test for auto_planned"""
pass
class TestAdvancedSaleInvoice(TestAdvancedInvoice): class TestAdvancedSaleInvoice(TestAdvancedInvoice):
quiet = 1 quiet = 1
...@@ -1073,9 +1078,136 @@ class TestAdvancedPurchaseInvoice(TestAdvancedInvoice): ...@@ -1073,9 +1078,136 @@ class TestAdvancedPurchaseInvoice(TestAdvancedInvoice):
self.assertEquals('stopped', packing_list.getSimulationState()) self.assertEquals('stopped', packing_list.getSimulationState())
transaction.commit() transaction.commit()
class TestWorkflow(SecurityTestCase):
def getBusinessTemplateList(self):
return ('erp5_core', 'erp5_base', 'erp5_pdm',
'erp5_trade', 'erp5_accounting',
'erp5_invoicing', 'erp5_advanced_invoicing')
def afterSetUp(self):
skin_folder = self.portal.portal_skins.custom
security_mapping_script_id = 'ERP5Type_getSecurityMapping'
if getattr(skin_folder, security_mapping_script_id, None) is None:
skin_folder.manage_addProduct['PythonScripts'].manage_addPythonScript(id=security_mapping_script_id)
skin_folder[security_mapping_script_id].ZPythonScript_edit('', 'return (("ERP5Type_getSecurityCategoryFromAssignment", ["function"]),)')
role_list = [
{'role_name_list': ('Assignee',), 'role_category_list': ('function/assignee',)},
{'role_name_list': ('Assignor',), 'role_category_list': ('function/assignor',)},
{'role_name_list': ('Auditor',), 'role_category_list': ('function/auditor',)},
{'role_name_list': ('Author',), 'role_category_list': ('function/author',)},
{'role_name_list': ('Associate',), 'role_category_list': ('function/associate',)},
{'role_name_list': ('Manager',), 'role_category_list': ('function/manager',)},
]
sale_invoice_type = self.portal.portal_types['Sale Invoice']
if len(sale_invoice_type.contentIds(filter={'portal_type': 'Role Infomation'})) == 0:
for role in role_list:
type_document = sale_invoice_type.newContent(portal_type='Role Information')
type_document.edit(**role)
transaction.commit()
self.tic()
for role in role_list:
for role_category in role['role_category_list']:
category_id_list = role_category.split('/')[1:]
node = self.portal.portal_categories.function
while category_id_list:
category_id = category_id_list.pop(0)
if node.get(category_id, None) is None:
node = node.newContent(id=category_id, portal_type='Category')
else:
node = node.get(category_id)
transaction.commit()
self.tic()
person_list = [
{'id': 'other'},
{'id': 'assignee', 'assignment_list': ({'function': 'assignee'},)},
{'id': 'assignor', 'assignment_list': ({'function': 'assignor'},)},
{'id': 'associate', 'assignment_list': ({'function': 'associate'},)},
{'id': 'auditor', 'assignment_list': ({'function': 'auditor'},)},
{'id': 'author', 'assignment_list': ({'function': 'author'},)},
{'id': 'manager', 'assignment_list': ({'function': 'manager'},)},
]
person_module = self.portal.person_module
for person in person_list:
if person_module.get(person['id'], None) is None:
person_document = person_module.newContent(id=person['id'], portal_type='Person')
person_document.edit(reference=person['id'])
for assignment in person.get('assignment_list', []):
assignment_document = person_document.newContent(portal_type='Assignment')
assignment_document.edit(function=assignment['function'])
self.portal.portal_workflow.doActionFor(assignment_document, 'open_action')
transaction.commit()
self.tic()
setattr(self, person['id'], person_document)
def test_autoplanned(self):
sale_invoice = self.portal.getDefaultModule('Sale Invoice').newContent(portal_type='Sale Invoice')
self.assertEquals(sale_invoice.getSimulationState(), 'draft')
self.portal.portal_workflow.doActionFor(sale_invoice, 'auto_plan')
self.assertEquals(sale_invoice.getSimulationState(), 'auto_planned')
# other as anonymous
self.failIfUserCanAccessDocument(self.other.getId(), sale_invoice)
self.failIfUserCanAddDocument(self.other.getId(), sale_invoice)
self.failIfUserCanDeleteDocument(self.other.getId(), sale_invoice)
self.failIfUserCanModifyDocument(self.other.getId(), sale_invoice)
self.failIfUserCanViewDocument(self.other.getId(), sale_invoice)
# assignee
self.assertUserCanAccessDocument(self.assignee.getId(), sale_invoice)
self.assertUserCanAddDocument(self.assignee.getId(), sale_invoice)
self.assertUserCanDeleteDocument(self.assignee.getId(), sale_invoice)
self.assertUserCanModifyDocument(self.assignee.getId(), sale_invoice)
self.assertUserCanViewDocument(self.assignee.getId(), sale_invoice)
# assignor
self.assertUserCanAccessDocument(self.assignor.getId(), sale_invoice)
self.assertUserCanAddDocument(self.assignor.getId(), sale_invoice)
self.assertUserCanDeleteDocument(self.assignor.getId(), sale_invoice)
self.assertUserCanModifyDocument(self.assignor.getId(), sale_invoice)
self.assertUserCanViewDocument(self.assignor.getId(), sale_invoice)
# associate
self.assertUserCanAccessDocument(self.associate.getId(), sale_invoice)
self.assertUserCanAddDocument(self.associate.getId(), sale_invoice)
self.assertUserCanDeleteDocument(self.associate.getId(), sale_invoice)
self.assertUserCanModifyDocument(self.associate.getId(), sale_invoice)
self.assertUserCanViewDocument(self.associate.getId(), sale_invoice)
# auditor
self.assertUserCanAccessDocument(self.auditor.getId(), sale_invoice)
self.failIfUserCanAddDocument(self.auditor.getId(), sale_invoice)
self.failIfUserCanDeleteDocument(self.auditor.getId(), sale_invoice)
self.failIfUserCanModifyDocument(self.auditor.getId(), sale_invoice)
self.assertUserCanViewDocument(self.auditor.getId(), sale_invoice)
# author
self.failIfUserCanAccessDocument(self.author.getId(), sale_invoice)
self.failIfUserCanAddDocument(self.author.getId(), sale_invoice)
self.failIfUserCanDeleteDocument(self.author.getId(), sale_invoice)
self.failIfUserCanModifyDocument(self.author.getId(), sale_invoice)
self.failIfUserCanViewDocument(self.author.getId(), sale_invoice)
# manager
self.assertUserCanAccessDocument(self.manager.getId(), sale_invoice)
self.assertUserCanAddDocument(self.manager.getId(), sale_invoice)
self.assertUserCanDeleteDocument(self.manager.getId(), sale_invoice)
self.assertUserCanModifyDocument(self.manager.getId(), sale_invoice)
self.assertUserCanViewDocument(self.manager.getId(), sale_invoice)
self.assertSameSet(('confirm_action', 'plan_action',),
[action['id'] for action in self.portal.portal_workflow.getActionsFor(sale_invoice)
if action['category'] == 'workflow'])
import unittest import unittest
def test_suite(): def test_suite():
suite = unittest.TestSuite() suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestAdvancedSaleInvoice)) suite.addTest(unittest.makeSuite(TestAdvancedSaleInvoice))
suite.addTest(unittest.makeSuite(TestAdvancedPurchaseInvoice)) suite.addTest(unittest.makeSuite(TestAdvancedPurchaseInvoice))
suite.addTest(unittest.makeSuite(TestWorkflow))
return suite return suite
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