From 0379e305fb8a14158c33b40dd883b4b4682f2e90 Mon Sep 17 00:00:00 2001 From: Wenjie Zheng <wenjie.zheng@tiolive.com> Date: Wed, 19 Nov 2014 16:33:22 +0000 Subject: [PATCH] erp5_core: Add ERP5workflow test. --- .../test.erp5.testERP5Workflow.py | 121 ++++++++++++++++++ .../test.erp5.testERP5Workflow.xml | 100 +++++++++++++++ 2 files changed, 221 insertions(+) create mode 100644 product/ERP5/bootstrap/erp5_core/TestTemplateItem/portal_components/test.erp5.testERP5Workflow.py create mode 100644 product/ERP5/bootstrap/erp5_core/TestTemplateItem/portal_components/test.erp5.testERP5Workflow.xml diff --git a/product/ERP5/bootstrap/erp5_core/TestTemplateItem/portal_components/test.erp5.testERP5Workflow.py b/product/ERP5/bootstrap/erp5_core/TestTemplateItem/portal_components/test.erp5.testERP5Workflow.py new file mode 100644 index 0000000000..d4af793d70 --- /dev/null +++ b/product/ERP5/bootstrap/erp5_core/TestTemplateItem/portal_components/test.erp5.testERP5Workflow.py @@ -0,0 +1,121 @@ +############################################################################## +# +# Copyright (c) 2014 Nexedi SA and Contributors. All Rights Reserved. +# Wenjie ZHENG <wenjie.zheng@tiolive.com> +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsability of assessing all potential +# consequences resulting from its eventual inadequacies and bugs +# End users who are looking for a ready-to-use solution with commercial +# garantees and support are strongly adviced to contract a Free Software +# Service Company +# +# This program is Free Software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +############################################################################## + +import unittest +from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase + +class TestERP5Workflow(ERP5TypeTestCase): + """ + Tests ERP5 Workflow. + """ + def getBusinessTemplateList(self): + """Returns list of BT to be installed.""" + return ('erp5_workflow',) + + def afterSetUp(self): + self.portal = self.getPortal() + self.workflow_module = self.portal.workflow_module + self.login() # as Manager + + def test_SimpleWorkflow(self): + """Default test.""" + # Create a workflow + workflow = self.workflow_module.newContent(portal_type='Workflow') + s1 = workflow.newContent(portal_type='State',title='State 1') + s2 = workflow.newContent(portal_type='State',title='State 2') + t1 = workflow.newContent(portal_type='Transition',title='Transition 1') + s1.setDestinationValue(t1) + t1.setDestinationValue(s2) + + # set initial state + workflow.setSourceValue(s1) + + # set state variable + workflow.setStateBaseCategory('validation_state') + + # Create a document connected to the workflow + doc = self.portal.newContent(portal_type='Folder', id='test_doc') + workflow.initializeDocument(doc) + self.assertEqual(s1.getRelativeUrl(), + doc._getDefaultAcquiredCategoryMembership('validation_state')) + + def test_Erp5Workflow(self): + """Tests the connection between ERP5Workflow and Objects.""" + # Create a base category as the intermidiate + self.portal.portal_categories.newContent('category_state') + + # Create a workflow + new_workflow = self.workflow_module.newContent(portal_type='Workflow', + id='new_workflow') + s1 = new_workflow.newContent(portal_type='State',title='State 1') + s2 = new_workflow.newContent(portal_type='State',title='State 2') + t1 = new_workflow.newContent(portal_type='Transition',title='Transition 1') + s1.setDestinationValue(t1) + t1.setDestinationValue(s2) + + # set initial state + new_workflow.setSourceValue(s1) + + # state variable + new_workflow.setStateBaseCategory('category_state') + + # create a portal type + type_object = self.portal.portal_types.newContent( + portal_type='Base Type', + id='Object Type', + type_class='XMLObject', + type_base_category_list=('category_state') + ) + + type_object.setErp5WorkflowValue(new_workflow) + + self.assertEqual(type_object.getBaseCategoryList(), ['erp5_workflow']) + self.assertEqual(type_object.getErp5Workflow(), 'workflow_module/new_workflow') + self.assertEqual(len(type_object.getErp5WorkflowValueList()), 1) + + # create a module + self.portal.portal_types.newContent( + 'Module Type', 'Base Type', + type_class='Folder', + type_filter_content_type=1, + type_allowed_content_type_list=('Object Type',)) + + self.portal.newContent(portal_type='Module Type', id='new_module') + + # create an object based on new-created portal type in the module + new_object = self.portal.new_module.newContent(portal_type='Object Type', + id='new_object') + self.assertTrue(new_object is not None) + self.assertEqual(new_object.getPortalType(), "Object Type") + self.assertEqual(new_object.getPortalType(), 'Object Type') + self.assertEqual(new_object.getCategoryStateTitle(), 'State 1') + +def test_suite(): + suite = unittest.TestSuite() + suite.addTest(unittest.makeSuite(TestERP5Workflow)) + return suite \ No newline at end of file diff --git a/product/ERP5/bootstrap/erp5_core/TestTemplateItem/portal_components/test.erp5.testERP5Workflow.xml b/product/ERP5/bootstrap/erp5_core/TestTemplateItem/portal_components/test.erp5.testERP5Workflow.xml new file mode 100644 index 0000000000..4a27557c10 --- /dev/null +++ b/product/ERP5/bootstrap/erp5_core/TestTemplateItem/portal_components/test.erp5.testERP5Workflow.xml @@ -0,0 +1,100 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Test Component" module="erp5.portal_type"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>default_reference</string> </key> + <value> <string>testERP5Workflow</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string>Test ERP5 workflow</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>test.erp5.testERP5Workflow</string> </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Test Component</string> </value> + </item> + <item> + <key> <string>sid</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>text_content_error_message</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>text_content_warning_message</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>version</string> </key> + <value> <string>erp5</string> </value> + </item> + <item> + <key> <string>workflow_history</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary> + <item> + <key> <string>component_validation_workflow</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/> + </pickle> + <pickle> + <tuple> + <none/> + <list> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> <string>validate</string> </value> + </item> + <item> + <key> <string>validation_state</string> </key> + <value> <string>validated</string> </value> + </item> + </dictionary> + </list> + </tuple> + </pickle> + </record> +</ZopeData> -- 2.30.9