[Erp5-report] r20167 - /erp5/trunk/products/ERP5/tests/testContributionRegistryTool.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Mar 26 19:21:24 CET 2008
Author: yusei
Date: Wed Mar 26 19:21:22 2008
New Revision: 20167
URL: http://svn.erp5.org?rev=20167&view=rev
Log:
Added a unittest.
Added:
erp5/trunk/products/ERP5/tests/testContributionRegistryTool.py
Added: erp5/trunk/products/ERP5/tests/testContributionRegistryTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testContributionRegistryTool.py?rev=20167&view=auto
==============================================================================
--- erp5/trunk/products/ERP5/tests/testContributionRegistryTool.py (added)
+++ erp5/trunk/products/ERP5/tests/testContributionRegistryTool.py Wed Mar 26 19:21:22 2008
@@ -1,0 +1,160 @@
+#############################################################################
+#
+# Copyright (c) 2008 Nexedi SA and Contributors. All Rights Reserved.
+# Yusei TAHARA <yusei at nexedi.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
+from transaction import get_transaction
+
+
+class TestContributionRegistryTool(ERP5TypeTestCase):
+
+ run_all_test = 1
+
+ def getTitle(self):
+ return "Contribution Registry Tool"
+
+ def getBusinessTemplateList(self):
+ return ()
+
+ def afterSetUp(self):
+ self.setUpTestScript()
+ self.setUpMimeType()
+ self.setUpPredicate()
+
+ def setUpTestScript(self):
+ if getattr(self.portal, 'IngestionFile_testEvent', None) is not None:
+ return
+ python_script_src = (
+"""\
+## Script (Python) "IngestionFile_testEvent"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=predicate=None
+##title=
+##
+from Products.ERP5Type.Document import newTempEvent
+
+new_id = newTempEvent(context, 'subobject', data=context.getData())
+event = context[new_id]
+
+subject = event.getContentInformation().get('Subject', None)
+if subject == 'Fax':
+ return 'Fax Message'
+return predicate.getDestinationPortalType()
+""")
+ self.portal.manage_addProduct['PythonScripts'].manage_addPythonScript(id='IngestionFile_testEvent')
+ self.portal.IngestionFile_testEvent.write(python_script_src)
+ get_transaction().commit()
+ self.tic()
+
+ def setUpMimeType(self):
+ portal_categories = self.portal.portal_categories
+ if getattr(portal_categories, 'mime_type', None):
+ mime_type = portal_categories.newContent(portal_type='Base Category',
+ id='mime_type')
+ text = mime_type.newContent(portal_type='Category', id='text')
+ html = html.newContent(portal_type='Category', id='html')
+ get_transaction().commit()
+ self.tic()
+
+ if getattr(portal_categories, 'mime_type', None):
+ mime_type = portal_categories.newContent(portal_type='Base Category',
+ id='mime_type')
+ text = mime_type.newContent(portal_type='Category', id='message')
+ html = html.newContent(portal_type='Category', id='rfc822')
+ get_transaction().commit()
+ self.tic()
+
+ def setUpPredicate(self):
+ portal_contribution_registry = self.portal.portal_contribution_registry
+ if getattr(portal_contribution_registry, 'webpage_mimetype', None) is None:
+ predicate = portal_contribution_registry.newContent(
+ portal_type='Contribution Predicate',
+ id='webpage_mimetype')
+ predicate._setMembershipCriterionCategoryList(['mime_type/text/html'])
+ predicate._setMembershipCriterionBaseCategoryList(['mime_type'])
+ predicate.setDestinationPortalType('Web Page')
+ get_transaction().commit()
+ self.tic()
+
+ if getattr(portal_contribution_registry, 'my_predicate', None) is None:
+ predicate = portal_contribution_registry.newContent(
+ portal_type='Contribution Predicate',
+ id='my_predicate')
+ predicate._setMembershipCriterionCategoryList(['mime_type/message/rfc822'])
+ predicate._setMembershipCriterionBaseCategoryList(['mime_type'])
+ predicate.setCriterion('file_extension', identity=['eml'])
+ predicate.setDestinationPortalType('Mail Message')
+ predicate.setTestMethodId('IngestionFile_testEvent')
+ get_transaction().commit()
+ self.tic()
+
+ def testFindPortalTypeName(self, quiet=0, run=run_all_test):
+ tool = self.portal.portal_contribution_registry
+
+ # Test extension matching
+ self.assertEqual(tool.findPortalTypeName(file_name='test.txt'), 'Text')
+ self.assertEqual(tool.findPortalTypeName(file_name='test.odt'), 'Text')
+ self.assertEqual(tool.findPortalTypeName(file_name='001.jpg'), 'Image')
+ self.assertEqual(tool.findPortalTypeName(file_name='002.PNG'), 'Image')
+ self.assertEqual(tool.findPortalTypeName(file_name='002.PNG'), 'Image')
+ self.assertEqual(tool.findPortalTypeName(file_name='index.html'), 'Web Page')
+ # Unknown extension
+ self.assertEqual(tool.findPortalTypeName(file_name='index.xxx'), 'File')
+
+ # Test mimetype matching
+ self.assertEqual(tool.findPortalTypeName(mime_type='text/html'), 'Web Page')
+
+ # Unknown mimetype
+ self.assertEqual(tool.findPortalTypeName(mime_type='application/octet-stream'), 'File')
+
+ # Test both of extension and mimetype
+ self.assertNotEqual(tool.findPortalTypeName(file_name='message.eml'),
+ 'Mail Message')
+ self.assertNotEqual(tool.findPortalTypeName(mime_type='message/rfc822'),
+ 'Mail Message')
+ self.assertEqual(tool.findPortalTypeName(file_name='message.eml',
+ mime_type='message/rfc822'),
+ 'Mail Message')
+
+ # Test test script
+ data = """\
+Subject: Fax
+"""
+ self.assertEqual(tool.findPortalTypeName(file_name='message.eml',
+ mime_type='message/rfc822',
+ data=data),
+ 'Fax Message')
+
+def test_suite():
+ suite = unittest.TestSuite()
+ suite.addTest(unittest.makeSuite(TestContributionRegistryTool))
+ return suite
More information about the Erp5-report
mailing list