Commit 96bacfa7 authored by Yusei Tahara's avatar Yusei Tahara

Added a unittest.


git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@20167 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent cf1c42a5
#############################################################################
#
# Copyright (c) 2008 Nexedi SA and Contributors. All Rights Reserved.
# Yusei TAHARA <yusei@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
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